我希望拖动对象在单击按钮时恢复到原始位置。 我使用'destroy'选项,但它似乎没有用。它会禁用拖动但不会恢复到原始位置。
有人可以帮忙吗?
编辑部分:
$('#Zoom').toggle(function() {
$("#draggable").draggable({});},
function() {
$("#draggable").draggable('destroy');});
这是我用来启用拖动的切换按钮。 destroy选项仅禁用拖动,并且不会将对象恢复回原始位置。
这也是我想让对象回到原来位置的按钮:
nextImg.addEventListener('click', function() {img.setAttribute("src", "img"+(++imgnum)+".jpg");}, false);
答案 0 :(得分:10)
这个怎么样?
<script type="text/javascript">
jQuery(document).ready(function() {
$("#draggable").data("Left", $("#draggable").position().left)
.data("Top", $("#draggable").position().top);
$("#draggable").draggable();
$("#nextImg").bind('click', function() {
$("#draggable").animate(
{ "left": $("#draggable").data("Left"),
"top": $("#draggable").data("Top")
}, "slow");
$("#draggable").attr("src", "img"+(++imgnum)+".jpg");
});
});
</script>
我做了一些假设,比如idI为“nextImg”的nextImg对象,这样我就可以使用jQuery绑定click事件(在javascript事件绑定过程中少一步?)我也假设你真的不想破坏拖拽功能。
答案 1 :(得分:4)
拖动停止时执行恢复(可选延迟),而不是单击。
$(document).ready(function() {
var originalTop = $('#draggable').position().top;
var originalLeft = $('#draggable').position().left;
$('#Zoom').toggle(
function() {
$("#draggable").draggable({});},
function() {
$("#draggable").draggable('destroy');
$('#draggable').position().top = originalTop;
$('#draggable').position().left= originalLeft;
});
});
答案 2 :(得分:2)
//reposition the draggable after it has finished
$(".selector").draggable({
stop: function(e,ui) {
ui.instance.element.css("left","0px");
ui.instance.element.css("top","0px");
}
});
答案 3 :(得分:0)
function revertable($drag){
$drag.data({ top: $drag.css('top'), left: $drag.css('left') })
$('.'+$drag.attr('id')+'.revert').data({ revert: '#'+$drag.attr('id') })
.on('click',function(){
var $rev = $( $(this).data('revert') );
$rev.css({ top: $rev.data('top'), left: $rev.data('left') });
})
}
//只需在create event
中调用该函数var $drag = $('#my_draggable'); //your element
$drag.draggable({
create: revertable($drag)
});
//测试它:更改顶部/左侧值,刷新,单击按钮以查看它是否有效。
<div id="my_draggable" style="position:absolute;top:100px;left:100px">
Drag Me Around
</div>
<button class="my_draggable revert">Revert My Draggable</button>
...测试过,应该适用于任何元素 (对于.on()函数需要jquery 1.7)
答案 4 :(得分:-1)
答案 5 :(得分:-1)
默认情况下,Revert选项设置为false,您必须将其设置为true。
$("#draggable").draggable({
revert: true
});
这实际上应该这样做......