2010-08-15 64 views
4

我有jQuqeryUI的问题。 我想在元素被拖放到无效目标上时运行一些代码。 据我所知,没有预定义的事件,但我想过要结合以下事件的信息:over,out,remove和stop,来实现这一点。然而,这可能听起来像是一团糟,是否有更清晰的方式来做到这一点?jQueryUI可排序,可拖动的还原事件

回答

7

可以传递到revert option的方法为好,例如,如果我们采取的例子演示如下:

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

You can give it a try heredropped传入的参数是它被丢弃的那个元素,这是.droppable(),如果它落在其他地方,它只是false

或者,如果您使用的是accept option你可能要计算关闭该,像这样:

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

这将使用接受选择并使用.is(),看是否可放开匹配。

You can view a demo of that here

+0

嘿,谢谢你,这正是我所期待的。 这是一个很好的无证功能;) – thetrompf 2010-08-15 12:00:48

+0

@thetrompf - 欢迎:) – 2010-08-15 12:02:36

+0

只是出于好奇 - 你在哪里找到这个?我在手册中找不到这些内容。 – kastermester 2010-08-15 12:11:30