我有一个jQueryUI的问题。 每当一个元素被拖放到无效的目标上时,我想运行一些代码。 据我所见,没有预定义的事件可以实现这一点,但是我考虑从以下事件中组合信息:over、out、remove和stop。然而,这可能会变得混乱,是否有更简洁的方法来实现它?
我有一个jQueryUI的问题。 每当一个元素被拖放到无效的目标上时,我想运行一些代码。 据我所见,没有预定义的事件可以实现这一点,但是我考虑从以下事件中组合信息:over、out、remove和stop。然而,这可能会变得混乱,是否有更简洁的方法来实现它?
您也可以将方法传递给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()
来判断可放置元素是否匹配。
.draggable()
的jQuery UI源代码:http://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.draggable.js#L199 :) - Nick Craver