问题 jquery可拖动选项


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

有人可以帮忙吗?

编辑部分:

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

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

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

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

10221
2018-06-24 20:48


起源

你把它拖到一个新的位置后是这个吗?你把它扔到某个地方后?中期拖? - jwl
在我将对象拖动到新位置之后。当我点击一个按钮时,它应该恢复到原来的位置。 - amit
@amit - 你应该给这个奖励,你有100个代表,应该这样做 - karim79
@karim:我该怎么做。我没有看到赏金的任何选择? - amit
常见问题:“如果两天之后,你仍然没有自己喜欢的答案,那么你可以提供赏金。” - Ben Koehler


答案:


这个怎么样?

<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事件绑定过程中少一步?)我也假设你不要我真想破坏拖拽功能。


10
2018-06-25 19:53



我想破坏可拖动的财产。多数民众赞成我现在要测试这个。让我们看看它是如何工作的。非常感谢您的努力!一个大拇指! - amit
超。脚本的一部分正在工作。图像重置回原始位置。但它没有切换到下一个图像。让我来看看吧。非常感谢。 - amit
GOT IT WORKING。非常感谢你们所有人。 - amit
我喜欢使用数据,我不够用那个功能。干得好。 - KClough
这对我也有帮助,因为我遇到了类似的问题。干得好 - chosta


拖动停止时(可选延迟)执行还原,而不是单击。

$(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;
         });
});

4
2018-06-24 20:55



通过缓存原始位置对象可以使这更加简洁,但我认为这更加详细地说明了这一点 - KClough
我认为这可能会奏效。我遇到的一个问题是thingtodrag和#thingtoclick有不同的eventlistner函数。 #thinktoclick不识别originalTop和originalLeft变量。原谅我对此我很新。 - amit
请在原帖中查看我的编辑。 - amit
编辑反映您的代码,我相信这是您正在寻找的 - KClough
jQuery的position()方法只是一个getter,而不是一个setter;因此最后两行代码实际上不会改变#draggable的位置。 - Aaron


编辑:我很确定这会解决问题:

//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"); 
    } 
});

2
2018-06-24 20:53



wouldnt还原会立即将拖动的对象恢复到原来的位置?我希望它在我点击一个按钮时发生。 - amit
@amit - 看我的编辑 - karim79
是的,我试过这个。它会禁用拖动但不会将对象恢复到原始位置。我想要实现的是:在图像幻灯片中,当usr完成拖动图像时,当用户点击下一个图像按钮时,下一个图像应显示在原始位置。 - amit
@amit - 请再次看我的编辑。此外,如果有效,请随时给我买啤酒。 - karim79
我现在要去测试它。但它不会将对象重置为文档的0,0?我希望它将对象重置为容器的0,0。我欠你的不仅仅是啤酒。从昨天开始,你一直是救命稻草。 - amit


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事件中调用该函数

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)


0
2018-01-19 22:31





会还原帮你吗?

http://docs.jquery.com/UI/Draggable#option-revert


-1
2018-06-24 20:52



拖动停止时,还原将元素返回到其原始位置,而不是在用户单击按钮时。 - Matthew Jones


默认情况下,Revert选项设置为false,您必须将其设置为true。

$("#draggable").draggable({ 
    revert: true
});

这应该实际上......


-1
2018-06-24 22:30



我知道。我明确记得将其设置为true。 - amit