Javascript jQuery UI可排序默认选择器?

Javascript jQuery UI可排序默认选择器?,javascript,jquery,jquery-ui,jquery-ui-sortable,Javascript,Jquery,Jquery Ui,Jquery Ui Sortable,我最近遇到了一个问题,花了我几分钟来解决,这让我对排序表中jqueryui项选项使用的默认选择器感到困惑。考虑一个portlet示例。我试图从sortable中排除项目,因此没有调用: $( ".column" ).sortable({ connectWith: ".column" }); 我用过: $( ".column" ).sortable({ connectWith: ".column", items: ':not(.fixed)' }); 由于默认行为是

我最近遇到了一个问题,花了我几分钟来解决,这让我对排序表中jqueryui项选项使用的默认选择器感到困惑。考虑一个portlet示例。我试图从sortable中排除项目,因此没有调用:

$( ".column" ).sortable({
    connectWith: ".column"
});
我用过:

$( ".column" ).sortable({
     connectWith: ".column",
     items: ':not(.fixed)'
});
由于默认行为是将列中的每个portlet添加到可排序列表中,所以我假设我只能从中排除一个类。然而,我看到了奇怪的行为。上面的代码使portlet的每个子元素都可以排序,如下所示:。显然,这是可以通过以下方式解决的:

 $( ".column" ).sortable({
     connectWith: ".column",
     items: '.portlet:not(.fixed)'
});
我意识到:not本身应该选择所有不符合选择器条件的元素,所以我的问题是,为什么默认行为只选择父元素,然后为什么:不超越此行为并选择子元素


如果这是一个简单的问题,我道歉

我认为正确的选择应该是:

 $(".column").sortable({
     connectWith: ".column",
     items: '>:not(.fixed)'
 });
该选项的默认值为
项:'>*',
(可排序元素的每个直接后代,)

参考:

演示:

我正在检查代码,以了解为什么它会将可排序项附加到由
项匹配的项上

更新 我认为问题的出现是因为jQuery UI函数:

   _create: function() {

        var o = this.options;
        this.containerCache = {};
        this.element.addClass("ui-sortable");

        //Get the items
        this.refresh();

        //Let's determine if the items are floating
        this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) : false;

        //Let's determine the parent's offset
        this.offset = this.element.offset();

        //Initialize mouse events for interaction
        this._mouseInit();

},

通过调用
this.refresh()它正在调用
this.\u刷新项目(事件)向起始选择器和附加
项的所有匹配元素添加特定的可排序项
选项,因此,所有元素都具有广泛的可排序行为。

我的理解正确吗:items:'>*'将是简单的英语“在可排序实例化时指定的父元素的所有直接子元素”,因此>将等同于“直接(或第一)子元素”,从而消除了:not的递归性质?看来我需要更新我的选择器,谢谢@Swires是的,我试着更好地检查它(),我试着查看jQuery UI代码,以了解问题的原因,非常感谢。我知道如何解决这个问题,我只是想知道为什么会这样,现在我明白了。