尝试在包含嵌套可排序列表的 jquery .sortable 列表上使用“beforeStop”函数时,出现以下 javascript 错误:
Uncaught TypeError: Cannot call method 'removeChild' of null
根据我见过的其他网站,这可能是因为我的项目实际上在它们下面有嵌套的可排序列表......并且在尝试取消可排序时,它不喜欢嵌套列表。除了抛出错误之外,它似乎仍然可以正常工作,但我仍然想避免错误。
我尝试了其他解决方案,但似乎无法以任何其他方式成功处理这种情况。“取消”或“项目”选项不起作用(仍然需要这些在主列表中可排序),容器属性也不起作用,因为项目混合在一起(有些可以移动到另一个列表,有些不能)。
我真的在寻找另一种解决方案,但我没有想法......还有其他建议吗?我真正想要的是在可排序项目中具有特定类别的项目不要离开他们的容器。就像“forceContainment:.specialItems”或其他东西的属性。
这是一个显示我在说什么的 jsFiddle:http: //jsfiddle.net/dataweb/28nMJ/37/
如果您检查输出的 javascript 错误/控制台,您将看到抛出的错误。
HTML:
<p>sublists shouldn't be able to be dragged out of their normal list</p>
<ul id="list1" class='mainlist'>
<li>One (a)</li>
<li>Two (a)</li>
<li class="hasItems">Three (a)
<ul class="sublist">
<li>subitem1-1</li>
<li>subitem1-2</li>
<li>subitem1-3</li>
<li>subitem1-4</li>
</ul>
</li>
<li>Four (a)</li>
<li class="hasItems">Five (a)
<ul class="sublist">
<li>subitem2-1</li>
<li>subitem2-2</li>
<li>subitem2-3</li>
<li>subitem2-4</li>
</ul>
</li>
</ul>
<ul id="list2" class='mainlist'>
<li>1</li>
<li>Two (b)</li>
<li>Three (b)</li>
</ul>
javascript:
$('ul.mainlist').sortable({
connectWith: 'ul.mainlist',
beforeStop: function(ev, ui) {
if ($(ui.item).hasClass('hasItems') && $(ui.placeholder).parent()[0] != this) {
$(this).sortable('cancel');
}
}
});
$('ul.sublist').sortable({
connectWith: 'ul.sublist'
});
任何帮助或反馈将不胜感激。