jQuery UI嵌套连接的sortables

时间:2012-12-10 12:56:53

标签: jquery jquery-ui jquery-ui-sortable

我必须使用嵌套的连接sortables和jQuery UI。这意味着任何可排序的任何可排序都可以丢弃。但是,我受到jQuery UI中的这个错误的影响:http://bugs.jqueryui.com/ticket/8180。简而言之,删除sortable之外的可排序引发异常:“Uncaught Error:HIERARCHY_REQUEST_ERR:DOM Exception 3”。

我有什么选择?

1 个答案:

答案 0 :(得分:0)

虽然尚未解决此问题,但您可以尝试在分配innermostContainer的值之前在可排序窗口小部件的_contactContainers()中添加验证。

    for (var i = this.containers.length - 1; i >= 0; i--){

        // never consider a container that's located within the item itself
        if($.contains(this.currentItem[0], this.containers[i].element[0]))
            continue;

        if(this._intersectsWith(this.containers[i].containerCache)) {

            // if we've already found a container and it's more "inner" than this, then continue
            if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))
                continue;

            if (this.currentItem[0] == this.containers[i].element[0]) {
                continue;
            }

            innermostContainer = this.containers[i];
            innermostIndex = i;

        } else {
            // container doesn't intersect. trigger "out" event if necessary
            if(this.containers[i].containerCache.over) {
                this.containers[i]._trigger("out", event, this._uiHash(this));
                this.containers[i].containerCache.over = 0;
            }
        }

    }

对于可以连接并放置在其他可排序内的可排序的情况,innermostContainer被确定为当前选择的可排序。然后将占位符附加在其中。当在mouseStop上调用_clear()并调用“this.placeholder.before(this.currentItem)”时,currentItem将在其自身之前插入。这会导致HIERARCHY_REQUEST_ERR:DOM异常3。

简单检查,如果currentItem是容器,则不允许将placeholder附加到currentItem。