jQuery UI可排序的子触发器

时间:2011-02-01 21:30:04

标签: jquery-ui tinymce jquery-ui-sortable

我有一个这样的清单:

<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会清除它的内容并且不允许焦点重新放在它上面。

如果单击的元素不是标签,有没有办法取消可排序?

如果有人有任何代码清理建议,也欢迎他们!

感谢。

1 个答案:

答案 0 :(得分:2)

这是一个我以前没见过的可选择的选项(我看了......哦,我看了)。我需要handle选项。这将使用指定的handle选项初始化sortable。

...简单地

$(document).ready(function(){
    $("#page_items").sortable({
        handle: 'label'
    });
});