我有一个这样的清单:
<ol id="page_items">
<li>
<label for="page_body_1">Content Area 1</label>
<textarea name="page_body_1" class="page_content_area" rows="10"></textarea>
</li>
<li>
<label for="page_body_2">Content Area 2</label>
<textarea name="page_body_2" class="page_content_area" rows="10"></textarea>
</li>
</ol>
页面加载时,#page_items
变成了一个tinyMCE编辑器。我想要的是定义li
元素是否被排序为<label>
而不是li
的其他子元素的元素。因此,开始排序的唯一元素是标签。
这是我的jQuery:
$(document).ready(function(){
$("#page_items").sortable({
activate: function(event, ui) {
var EditorID = ui.item.find('textarea').attr('id');
if ( EditorID ){
tinyMCE.execCommand("mceRemoveControl", false, EditorID);
$('#'+EditorID).hide();
}
},
stop: function(event, ui) {
var EditorID = ui.item.find('textarea').attr('id');
if ( EditorID ){
$('#'+EditorID).show();
tinyMCE.execCommand("mceAddControl", false, EditorID);
delete EditorID;
}
}
});
});
如果有人想知道,我正在禁用tinyMCE,因为在FireFox中,在DOM周围移动iFrame会清除它的内容并且不允许焦点重新放在它上面。
如果单击的元素不是标签,有没有办法取消可排序?
如果有人有任何代码清理建议,也欢迎他们!
感谢。
答案 0 :(得分:2)
这是一个我以前没见过的可选择的选项(我看了......哦,我看了)。我需要handle
选项。这将使用指定的handle选项初始化sortable。
...简单地
$(document).ready(function(){
$("#page_items").sortable({
handle: 'label'
});
});