问题是:即使#sortable设置为“make”只有class =“class1”可排序的项目,替换该类仍然允许可排序。似乎项目类在某些时候被缓存。
为什么不将类从class1替换为lock来防止div被排序?我错过了什么吗?
示例代码:
<div id="sortable">
<div class="class1" id="1">
<div class="sortHandle">....</div>
<href="javascript:void(null);" onclick="toggleLock($(this).attr('id').replace('R',''));" id="R1">lock</a>
<p>This is item 1</p>
</div>
<div class="class1" id="2">
<div class="sortHandle"></div>
<href="javascript:void(null);" onclick="toggleLock($(this).attr('id').replace('R',''));" id="R2">lock</a>
<p>This is item 2</p>
</div>
<div class="class1" id="3">
<div class="sortHandle"></div>
<href="javascript:void(null);" onclick="toggleLock($(this).attr('id').replace('R',''));" id="R3">lock</a>
<p>This is item 3</p>
</div>
</div>
JS:
$(function() {
$("#sortable").sortable({
items: '.class1',
handle: '.sortHandle',
cursor: 'move',
start: function(e,ui) {
el = e.target;
startPos = ui.item.prevAll().length+1;
},
update: function(event, ui) {
data = $('.class1').sortable('toArray');
newPos = ui.item.prevAll().length+1;
alert("position: "+startPos+"; newposition: "+newPos);
}
}).disableSelection();
});
答案 0 :(得分:0)
更改类不会使项目无法解决,因为数据已经附加到它上面。 最简单(不是最好)的方法是在使用.unbind()更改类时从元素中清除处理程序 最好是在更新类名后重新初始化可排序 - 这将确保您不会因为不断修改DOM而失去性能