2013-10-29 46 views
4

我有兩個我想使用JQuery UI排序的列表。它應該工作的方式是列表One包含一些項目的選擇可能被拖動到列表2.但是不應該允許在列表1中排序或從列表2拖回列表1,最後在列表2中排序是允許。JQueryUI可排序:只允許排序到第二個列表,但不能返回到第一個

名單都是這樣

<ul class="sortable" id = "list1"> 
    <li> Item 1 </li> 
    <li> Item 2 </li> 
    <li> Item 3 </li> 
    <li> Item 4 </li> 
</ul> 

<ul class="sortable" id = "list2"> 
    <li> Item 1 </li> 
    <li> Item 2 </li> 
    <li> Item 3 </li> 
    <li> Item 4 </li> 
</ul> 

我目前的排序調用如下

$('#list1, #list2').sortable({ 
    helper: "clone", 
    placeholder: "selected-option", 
    forcePlaceholderSize: true, 
    dropOnEmpty: true, 
    connectWith: '.sortable', 
    tolerance: "pointer", 
    revert: true, 
    cursor: "move", 
    receive: function (event, ui) { 
     // existing logic 

    }, 
    update: function (event, ui) { 
     // existing logic 
    } 
}); 

我知道,我將不得不操縱止,收到的排序調用函數來實現這一,但我不知道如何..

回答

6
$('#list1, #list2').sortable({ 
    helper: "clone", 
    placeholder: "selected-option", 
    forcePlaceholderSize: true, 
    dropOnEmpty: true, 
    connectWith: '.sortable', 
    tolerance: "pointer", 
    revert: true, 
    cursor: "move", 
    beforeStop: function (event, ui) { 
    if($(ui.helper).parent().attr('id') === 'list1' && $(ui.placeholder).parent().attr('id') === 'list1') 
     return false; 
    else if($(ui.helper).parent().attr('id') === 'list2' && $(ui.placeholder).parent().attr('id') === 'list1') 
     return false; 
    } 
}); 

http://jsfiddle.net/py7FN/

+0

@Manage請讓我知道,如果這個答案幫助解決了你的問題,或者給我反饋,如果它沒有。 – Trevor

+0

@Manquer如果你不給我任何反饋,說明你爲什麼認爲我的回答沒有回答你的問題,那我就解決不了。我只是添加了一個小提琴演示我的代碼。我相信它會照顧你所有的條件。 – Trevor

+1

非常抱歉,我已關閉了幾天,是的,您的邏輯滿足了我所有的查詢,但實際上我必須將其拆分爲兩個可排序的調用,因爲我必須獨立地在每個列表上執行額外的更新操作,並且它正變得cubersome來驗證每個項目都包含所有的排列組合。我確實採用了使用助手和佔位符對象id的邏輯......非常感謝:D – Manquer

相關問題