jQueryUI sortable,draggable revert event

4

我有一个jQueryUI的问题。 每当一个元素被拖放到无效的目标上时,我想运行一些代码。 据我所见,没有预定义的事件可以实现这一点,但是我考虑从以下事件中组合信息:over、out、remove和stop。然而,这可能会变得混乱,是否有更简洁的方法来实现它?

1个回答

7

您也可以将方法传递给revert选项,例如,如果我们使用以下示例演示:

<div id="draggable" class="ui-widget-content">
    <p>I revert when I'm not dropped</p>
</div>
<div id="droppable" class="ui-widget-header">
    <p>Drop me here</p>
</div>

然后在可拖动元素上,您可以计算是否应该还原,如下所示:
$("#draggable").draggable({ 
    revert:  function(dropped) {
       var dropped = dropped && dropped[0].id == "droppable";
       if(!dropped) alert("I'm reverting, what a cruel world!");
       return !dropped;
    } 
});

您可以在此处尝试, 传递的dropped参数是它被放置在上面的元素,即.droppable(),如果落在其他地方,则为false

或者如果您正在使用accept选项,您可能想要根据它进行计算,像这样:

var dropped = dropped && $(this).is(dropped.droppable('option', 'accept'));

这里使用了accept选择器,并使用.is()来判断可放置元素是否匹配。

您可以在此处查看演示


嘿,谢谢你提供的内容,正是我所需要的。 这是一个不错的未记录特性 ;) - thetrompf
只是出于好奇 - 你在哪里找到这个的?我在手册中找不到任何相关内容。 - kastermester
2
@kastermester - 这里是.draggable()的jQuery UI源代码:http://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.draggable.js#L199 :) - Nick Craver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接