ear*_*efl 2 jquery jquery-ui-sortable nested-sortable
我有一个nestedSortable列表,其中我不允许嵌套具有相同名称的项目(可能是id,无论如何).我正在使用beforeStop()方法获取当前元素的名称及其父元素的名称(因为当它嵌套时,它获取表单:)
<ol class="sortable">
<li><div id="1">Item</div>
<ol>
<li>
<div id="2">Item</div>
</li>
</ol>
</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
请注意,我使用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');
}
}
});
Run Code Online (Sandbox Code Playgroud)
这段代码可以禁止嵌套具有相同名称的项目,如果我控制台记录移动的元素及其祖父母,我可以看到我引用了正确的元素.但是,在调用sortable('cancel')后,我也得到以下控制台错误,这自然会炸掉IE:
未捕获的TypeError:无法调用null的方法'removeChild'
jquery-ui-1.8.12.custom.min.js
Run Code Online (Sandbox Code Playgroud)
d.widget._clear
jquery-ui-1.8.12.custom.min.js:269
Run Code Online (Sandbox Code Playgroud)
$ .widget.$.extend._clear
jquery.ui.nestedSortable.js:305
Run Code Online (Sandbox Code Playgroud)
d.widget._mouseStop
jquery-ui-1.8.12.custom.min.js:237
Run Code Online (Sandbox Code Playgroud)
f.extend.speed.d.complete
jquery.js:4
Run Code Online (Sandbox Code Playgroud)
f.fx.step
jquery.js:4
Run Code Online (Sandbox Code Playgroud)
H
jquery.js:4
Run Code Online (Sandbox Code Playgroud)
f.extend.tick
jquery.js:4
Run Code Online (Sandbox Code Playgroud)
有人可以给我一些关于如何调试这个的提示吗?或者你会推荐另一种方式吗?我使用的是最新版本1.3.4和jQuery 1.7.1.
| 归档时间: |
|
| 查看次数: |
1970 次 |
| 最近记录: |