jQuery:在最顶层的LI元素上取消排序?

时间:2010-07-12 19:59:54

标签: javascript jquery

我有两个直接UL元素的排序,每个元素至少有一个LI元素,多达十个,排序如下:

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

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

基本上:我希望LI项目2-N可以排序,1个固定。

思想?

2 个答案:

答案 0 :(得分:2)

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

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

或者,您可以使用“gt”选择器指定索引大于0的所有列表项:

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

我确信还有很多其他方法可以解决这个问题。

答案 1 :(得分:1)

嗯,有点坚持不懈会有所帮助。刚刚将可排序的调用更改为:

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

然后给每个LI我想要排序一个'sortable-item'类。瞧。