From: Martin Hoch Date: Thu, 23 Aug 2012 02:02:39 +0000 (-0400) Subject: Sortable: Fixed jerkiness with nested-sortables. Fixes #4857 - Nested lists don't... X-Git-Tag: 1.8.24~6 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a4ae3824893c085043122fd83d80723a08061ae2;p=jquery-ui.git Sortable: Fixed jerkiness with nested-sortables. Fixes #4857 - Nested lists don't work properly with sortable. (cherry picked from commit 2b899cc8437c5bc16b60a01a51241e4096fd80db) --- diff --git a/ui/jquery.ui.sortable.js b/ui/jquery.ui.sortable.js index 403fc53eb..8f806c6cc 100644 --- a/ui/jquery.ui.sortable.js +++ b/ui/jquery.ui.sortable.js @@ -296,7 +296,16 @@ $.widget("ui.sortable", $.ui.mouse, { var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item); if (!intersection) continue; - if(itemElement != this.currentItem[0] //cannot intersect with itself + // Only put the placeholder inside the current Container, skip all + // items form other containers. This works because when moving + // an item from one container to another the + // currentContainer is switched before the placeholder is moved. + // + // Without this moving items in "sub-sortables" can cause the placeholder to jitter + // beetween the outer and inner container. + if (item.instance !== this.currentContainer) continue; + + if (itemElement != this.currentItem[0] //cannot intersect with itself && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before && !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)