我必須對jQuery UI使用嵌套連接排序。這意味着任何可排序的元素都可以放入任何其他排序元素中。但是,我受到jQuery UI中的這個錯誤的影響:http://bugs.jqueryui.com/ticket/8180。簡而言之,在可排序的外部放置可排序的異常將引發異常:「未捕獲的錯誤:HIERARCHY_REQUEST_ERR:DOM異常3」。jQuery UI嵌套連接排序
我有什麼選擇?
我必須對jQuery UI使用嵌套連接排序。這意味着任何可排序的元素都可以放入任何其他排序元素中。但是,我受到jQuery UI中的這個錯誤的影響:http://bugs.jqueryui.com/ticket/8180。簡而言之,在可排序的外部放置可排序的異常將引發異常:「未捕獲的錯誤:HIERARCHY_REQUEST_ERR:DOM異常3」。jQuery UI嵌套連接排序
我有什麼選擇?
儘管尚未解決此問題,但可以在爲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;
}
}
}
在可連接的,並放置其他sortables內的排序的情況下,innermostContainer被確定爲選擇的可排序的電流。佔位符隨後被添加到其中。當_clear()在mouseStop上被調用,並且「this.placeholder.before(this.currentItem)」被調用時,currentItem被插入到它自己之前。這會導致HIERARCHY_REQUEST_ERR:DOM異常3.
簡單檢查,如果currentItem是容器,則不允許將佔位符附加到currentItem。