0

jQuery UI でネストされた接続されたソータブルを使用する必要があります。つまり、任意のソート可能オブジェクトを他の任意のソート可能オブジェクトにドロップできます。ただし、jQuery UI のバグhttp://bugs.jqueryui.com/ticket/8180の影響を受けています。簡単に言うと、ソート可能オブジェクトをソート可能オブジェクトの外にドロップすると、「Uncaught Error: HIERARCHY_REQUEST_ERR: DOM Exception 3」という例外がスローされます。

私のオプションは何ですか?

4

1 に答える 1

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;
            }
        }

    }

他の sortable 内に接続して配置できる sortable の場合、innermostContainer が現在選択されている sortable として決定されます。次に、プレースホルダーがその中に追加されます。mouseStop で _clear() が呼び出され、"this.placeholder.before(this.currentItem)" が呼び出されると、currentItem がそれ自体の前に挿入されます。これにより、HIERARCHY_REQUEST_ERR: DOM Exception 3 が発生します。

currentItem がコンテナーである場合、プレースホルダーを currentItem に追加できないようにする単純なチェック。

于 2013-06-14T13:08:56.420 に答える