У меня есть список nestedSortable, в котором я запрещаю вложение элементов с одинаковыми именами (может быть id, что угодно). Я использую метод beforeStop (), чтобы получить имя текущего элемента и имя его родительского родителя (потому что, когда он вложен, он получает форму:)
<ol class="sortable">
<li><div id="1">Item</div>
<ol>
<li>
<div id="2">Item</div>
</li>
</ol>
</li>
</ol>
Обратите внимание, что я использую элемент div в качестве дескриптора. Мой код для инициализации nestedSortable:
$('ol.sortable').nestedSortable({
disableNesting: 'no-nest',
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
maxLevels: 5,
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
beforeStop: function(event, ui){ // disallows two elements with the same part number from nesting
var thisName = ui.item[0].firstChild.innerHTML;
var parentName = ui.item[0].parentElement.parentElement.firstChild.innerHTML;
if (thisName == parentName){
$(this).sortable('cancel');
}
}
});
Этот код работает, чтобы запретить вложение элементов с одинаковыми именами, и если я консоль регистрирую перемещенный элемент и его прародителя, я вижу, что ссылаюсь на правильные элементы. Тем не менее, я также получаю следующую консольную ошибку после вызова sortable ('cancel'), который естественным образом взрывает IE:
Uncaught TypeError: Невозможно вызвать метод 'removeChild' со значением NULL
jquery-ui-1.8.12.custom.min.js
d.widget._clear
jquery-ui-1.8.12.custom.min.js:269
$. Виджет. $. Extend._clear
jquery.ui.nestedSortable.js:305
d.widget._mouseStop
jquery-ui-1.8.12.custom.min.js:237
f.extend.speed.d.complete
jquery.js:4
f.fx.step
jquery.js:4
ч
jquery.js:4
f.extend.tick
jquery.js:4
Может кто-нибудь дать мне несколько советов, как это отладить? Или есть альтернативный способ, который вы бы порекомендовали? Я использую последнюю версию 1.3.4 и jQuery 1.7.1.