2012-08-12 37 views
3

我想讓jQuery UI元素在容器外拖動時消失。如何在排除容器外的情況下使我的排序消失?

例如說我有

<div class="myfavoritecontainer"> 
    <ul class="sortable"> 
    <li>item1</li> 
    <li>item2</li 
    </ul> 
</div> 

一個列表和排序變成一個jQuery UI的排序......現在,當我拖累了這些項目從排序列表中我希望,使他們消失...什麼是最好的方法來完成?

一點點澄清我想要做的事: 參考此的jsfiddle:http://jsfiddle.net/nveid/kQmWt/4/

基本上從右側列表我添加到列表左邊(!那部分完成)項目二,當我拖動到左側列表的外部時,列表左側的項目我想讓它們消失。如果您在拖動左側內容的同時查看js控制檯,您將會看到我正在努力完成的任務。但是我只是沒有完成它,因爲鼠標左鍵被觸發後鼠標正在被觸發。事件觸發的確切原因我不知道,但小提琴應該澄清。

最好我可以做到這一點,只要你拖動它的div容器外部的左側的項目上移鼠標,他們會消失,但我會設置爲他們恢復到原來的位置後李項目將消失,但mouseenter/mouseleave事件不適合我。

回答

8

我看起來像你需要使用beforeStop刪除項目,並根據over和out來維護一個sentinel,以確定你是否已經移出容器的邊界。我在這裏立足這一關上一篇文章:Jquery Sortable, delete current Item by drag out

的的jsfiddle編輯看起來像這樣的排序dedinition:

 over: function(e, ui) { sortableIn = 1; }, 
     out: function(e, ui) { sortableIn = 0; }, 
     beforeStop: function (event, ui) { 
      newItem = ui.item; 
      if (sortableIn == 0) { 
       ui.item.remove(); 
      } 
     }, 
+0

精美的作品,我覺得我做了堆棧溢出一些搜索,但不過貌似我錯過了一個。 :) – Ceagle 2012-08-12 02:27:46

+0

@鷹幫助:) – Carth 2012-08-12 02:35:49

相關問題