1

我遇到了 jQuery UI 条件的问题。

这是代码:

$(function() {
    $("#draggable2").draggable({ 
        snap: ".ui-widget-header",
        snapMode: "inner", 
        revert: true
    });
});

我的问题:

如何使用if 语句,以便我的可拖动项目在捕捉到我的ui-widget-header时不会恢复?

非常感谢 ;)

4

1 回答 1

0

jQueryUI 确实保留了“捕捉”元素的内部“状态”,但您必须做一些工作才能做到这一点。

您将要为停止事件定义一个事件处理程序(当可拖动对象停止拖动时调用该事件处理程序)。

一个名为 snapElements 的数组保存在小部件数据中,它看起来像这样:

[ 
    { 
        height: 102, 
        item: { /* DOM element */ }, 
        left: 10, 
        snapping: false, 
        top: 10, 
        width: 102 
    }, ...
]

您真正想要的是这里的snapping房产。捕捉将告诉您该项目当前是否“ snapping”到可拖动的对象。

snapElements数组会针对每个事件进行更新,因此它在处理程序drag中始终是最新的。drag从那里,我们只需要draggable使用 data() 从关联元素中获取小部件实例。

考虑到这个数组,我们可以编写这样的代码来确定它是否捕捉到目标:

$("#draggable2").draggable({
    snap: ".ui-widget-header",
    snapMode: "inner", 
    revert: true
    stop: function(event, ui) {
        var draggable = $(this).data("draggable");
        $.each(draggable.snapElements, function(index, element) {
            if (element.snapping) {
                //i can't quit figure out how to stop the reverting from here, but here's you condition.
                console.log("Snapped !!");
            }
        });
    },
});

哦,我在网上找到了这个,希望对你有帮助。 还原函数回调。

于 2013-06-13T14:38:27.607 回答