2017-09-13 64 views
1

我使用jQuery,3.2.1.min.js和jQuery的ui.min.js版本1.12.1jQueryUI的可排序 - 取消屬性離開無法編輯輸入

我希望做一個排序列表中,並且在該列表中,我有一些我不想排序的元素(其他可排序的列表是精確的)。輸入元素保持可編輯是非常重要的。

<ul id="a"> 
    <li>sometext<input value="1" /></li> 
    <li>moretext<input value="2" /></li> 
    <li class="b"> 
    <ul> 
     <li>text<input value="3" /></li> 
     <li>blarg<input value="4" /></li> 
    </ul> 
    </li> 
    <li>last<input value="5" /></li> 
</ul> 

當我初始化這樣的排序:

jQuery("#a").sortable(); 

這一切工作正常,我可以在同一時間編輯輸入元素和排序。 但是當我添加取消屬性以防止拖能子列表,然後輸入字段不能得到了編輯:

jQuery("#a").sortable({cancel: ".b"}); 

我不明白這種行爲在所有。

我提出這個問題的codepen:https://codepen.io/DesmondTMB/pen/oGgjYX

如果任何人有一個解決這個問題,我將非常感激。我試圖讓這個行爲以來我想要的方式,因爲小時。

謝謝!

+0

懷疑你想要一個像''> li:not(.b)「''的'items'。 – Twisty

回答

0

根據您CodePen,我建議如下:

jQuery(function(){ 
    jQuery("#a").sortable({ 
    items: "> li:not(.b)" 
    }); 
    jQuery("#x").sortable(); 
}); 

請查看:http://api.jqueryui.com/sortable/#option-items

類型:選擇

默認:"> *"

指定哪些元素中的物品守ld可排序。

這將允許所有li但不.b元素可排序,並且將離開輸入字段編輯。

+0

這增加了一些我不想要的行爲,因爲如果我無法排序的元素位於列表的頂部,我就不能再刪除任何東西。這就是爲什麼我使用取消屬性而不是排除項目。但最終它是一種改進,因爲這些元素的可編輯性對我來說至關重要,所以它現在成爲一種解決方法。謝謝 – DesmondTMB

相關問題