2010-07-12 27 views
2

我有两个sortables是直的UI元素,每个至少在LI元素和多达十个,整理像这样:jQuery:取消最顶层LI元素的排序?

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
}).disableSelection(); 

我希望每个UL拥有最顶部LI元素读“标题'。我不希望这个LI元素是可拖动的,我不希望它是可排序的;它实际上是UL的标题块。 sortable()调用中的'cancel'选项禁止用户拖动它,但用户仍然可以上下拖动列表中的其他LI元素,从而移除最顶部的LI。我想阻止这一点。

本质上:我希望LI项目2-N是可排序的,而1个是固定的。

想法?

回答

1

那么,一点点毅力woulda帮助。只是改变了排序调用看起来像这样:

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
    items: '.sortable-item' 
}); 

然后给了我想要排序的“排序项”级每个L1。瞧。

2

我没有看到你已经想出的解决方案的问题,但我想我会提到,使用“:不”和“:第一”选择器的组合,你可以更直接地获得您正在寻找理想的结果:

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
    items: 'li:not(:first)' 
}); 

另外,还可以使用“GT”选择指定一个更大的索引的所有列表项比0:

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
    items: 'li:gt(0)' 
}); 

我敢肯定有还有很多其他方法可以解决这个问题。