2010-08-15 103 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