2017-09-13 69 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