2012-08-02 25 views
2

我有兩個連接的可排序列表。我不希望用戶能夠將列表留空。他們必須始終在列表中至少包含一個項目。在可排序的JQuery UI列表中留下至少一個項目

我試圖做一些很長的線:

$("#unused, #used").sortable({ 
     connectWith: ".connectedSortable", 
     placeholder: "placeholder", 
     items: "li:not(:only-child)" 
     }).disableSelection(); 

任何人都知道如何做到這一點?

+0

你收到了什麼錯誤? – Kiruse 2012-08-02 16:20:53

+0

抱歉,該示例沒有拋出錯誤「li(:only-child)」拋出錯誤(:only-child)未被識別 – JonWells 2012-08-02 16:24:32

+0

當然,它確實,因爲它應該是'li:only-child'。不過,我相信這個片段只會在刪除最後剩下的項目時,如果它是排序時唯一已經在列表中的項目。我不知道我的方式太好,但有沒有回調參數?例如,您必須逐步檢查目前正在排序的項目,或者即將刪除的項目是否是最後一個項目。 – Kiruse 2012-08-02 16:29:22

回答

3

使用cancel選項而不是items

$("#unused, #used").sortable({ 
    connectWith: ".connectedSortable", 
    placeholder: "placeholder", 
    cancel: "li:only-child" 
}); 

此選項將阻止分揀只有一個時項目留在可排序列表中。

查看工作示例here

1

我認爲這可能是你使用:not vs not()但不能肯定地說。總體而言,選擇器有時候可能會很痛苦,因爲你試圖將它們映射出各種需求。

嘗試$(this + 'li').not(':only-child')

如果不工作,然後嘗試

$(this + 'li:not:only-child')

相關問題