我必须使用带有 jQuery UI 的嵌套连接排序。这意味着任何可排序的对象都可以丢弃在任何其他可排序对象中。但是,我受到 jQuery UI 中的这个错误的影响:http: //bugs.jqueryui.com/ticket/8180。简而言之,将可排序对象放在可排序对象之外会引发异常:“未捕获的错误:HIERARCHY_REQUEST_ERR:DOM 异常 3”。
我有哪些选择?
我必须使用带有 jQuery UI 的嵌套连接排序。这意味着任何可排序的对象都可以丢弃在任何其他可排序对象中。但是,我受到 jQuery UI 中的这个错误的影响:http: //bugs.jqueryui.com/ticket/8180。简而言之,将可排序对象放在可排序对象之外会引发异常:“未捕获的错误:HIERARCHY_REQUEST_ERR:DOM 异常 3”。
我有哪些选择?
虽然尚未解决此问题,但您可以尝试在分配最内层容器的值之前在可排序小部件的 _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;
}
}
}
在可以连接并放置在其他可排序对象中的可排序对象的情况下,最内层的容器被确定为当前选定的可排序对象。然后将占位符附加在其中。当在 mouseStop 上调用 _clear() 并调用“this.placeholder.before(this.currentItem)”时,currentItem 被插入到它自己之前。这会导致 HIERARCHY_REQUEST_ERR: DOM Exception 3。
简单检查,如果 currentItem 是容器,则不允许将占位符附加到 currentItem。