jquery可拖动选项

时间:2009-06-24 20:48:58

标签: jquery jquery-ui

我希望拖动对象在单击按钮时恢复到原始位置。 我使用'destroy'选项,但它似乎没有用。它会禁用拖动但不会恢复到原始位置。

有人可以帮忙吗?

编辑部分:

$('#Zoom').toggle(function() {
                $("#draggable").draggable({});},
            function() {
                $("#draggable").draggable('destroy');});

这是我用来启用拖动的切换按钮。 destroy选项仅禁用拖动,并且不会将对象恢复回原始位置。

这也是我想让对象回到原来位置的按钮:

nextImg.addEventListener('click', function() {img.setAttribute("src", "img"+(++imgnum)+".jpg");}, false);

6 个答案:

答案 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
});

这实际上应该这样做......