2012-12-10 121 views
0

我必須對jQuery UI使用嵌套連接排序。這意味着任何可排序的元素都可以放入任何其他排序元素中。但是,我受到jQuery UI中的這個錯誤的影響:http://bugs.jqueryui.com/ticket/8180。簡而言之,在可排序的外部放置可排序的異常將引發異常:「未捕獲的錯誤:HIERARCHY_REQUEST_ERR:DOM異常3」。jQuery UI嵌套連接排序

我有什麼選擇?

回答

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

    } 

在可連接的,並放置其他sortables內的排序的情況下,innermostContainer被確定爲選擇的可排序的電流。佔位符隨後被添加到其中。當_clear()在mouseStop上被調用,並且「this.placeholder.before(this.currentItem)」被調用時,currentItem被插入到它自己之前。這會導致HIERARCHY_REQUEST_ERR:DOM異常3.

簡單檢查,如果currentItem是容器,則不允許將佔位符附加到currentItem。