javascript - jQuery UI 可排序取消多个嵌套级别的选项

标签 javascript jquery jquery-ui jquery-ui-sortable

我想连接多个嵌套的可排序对象,并定义只有具有特定 css 类的元素实际上是可排序的,而所有其他元素仍然提供可排序目标,而不能自行排序。 据我所知,我可以使用 cancel 选项来完成此操作,但我找不到一种方法来指定在所有嵌套级别上有效的选择器,因为我不知道级别的数量这点。 在 this jsfiddle它适用于第二层,但不适用于其他层。例如,在第一级中,禁用的元素仍然可以排序,而在第三级中,则根本无法排序。

任何有助于做到这一点的提示都非常感谢(并赞成)!

谢谢

桑德罗

最佳答案

我认为你可能把这个问题过于复杂化了。我认为您实际上不需要知道有多少个级别。尝试向“禁用”元素添加一个类。然后你可以像这样对所有内容进行排序:

$(function() {
    $( ".sortable" ).sortable({
                    connectWith: ".sortable",
                    cancel: ".notsortable"
    });
});

我更新了您的fiddle ,并在此处包含完整代码:

$(function() {
    $( ".sortable" ).sortable({
    				connectWith: ".sortable",
				    cancel: ".notsortable"
    });
});
.sortable {
    padding-left: 20px;
    border: 1px solid gray;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<div class="sortable">
<div class="notsortable">Item 1 (disabled)</div>
<div>Item 2</div>
<div>Item 3</div>
<div class="notsortable">Item 4 (disabled)</div>
<div class="notsortable">Item 5 (disabled)</div>
<div>Item 6
    <div class="sortable">
        <div class="notsortable">Item 6.1 (disabled)</div>
        <div class="notsortable">Item 6.2 (disabled)</div>
        <div>Item 6.3</div>
        <div>Item 6.4</div>
        <div>Item 6.5</div>
        <div class="sortable">
            <div>Item 6.5.1</div>
            <div>Item 6.5.2</div>
            <div>Item 6.5.3</div>
            <div class="notsortable">Item 6.5.4 (disabled)</div>
            <div class="notsortable">Item 6.5.5 (disabled)</div>
            <div class="sortable">
                <div class="notsortable">Item 6.5.5.1 (disabled)</div>
                <div class="notsortable">Item 6.5.5.2 (disabled)</div>
            </div>
        </div>
    </div>
</div>
<div>Item 7</div>
</div>

更新:由于您无法向“禁用”元素添加类,请尝试以下操作:

$(function() {
    $( ".sortable" ).sortable({
                    connectWith: ".sortable",
                    cancel: "div:not(.enabled,.sortable)"
    });
});

更新了 fiddle here 。为了便于说明,我还使用相同的选择器将所有“禁用”元素涂成红色。

关于javascript - jQuery UI 可排序取消多个嵌套级别的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613338/

相关文章:

javascript - JQuery 在元素级别内联复制 onmouseenter 逻辑

jquery - 如何计算jquery中mousedown事件期间的时间?

Javascript Array indexOf by Key, Value问题

javascript - 使 d3 强制布局与标记数据一起使用

javascript - Jquery load() 不加载 php 文件

javascript - Bootstrap 固定页眉和页脚,带有可折叠侧边栏

JQuery-ui : tabs with heightstyle fill, 在可调整大小的面板中,选项卡内容高度未更新

jquery - 是否可以控制 jQuery UI Sortable 助手的溢出?

javascript - 访问 Mongoose 查询结果

javascript - Jest : Change output of manual mock for different tests within a test suite