【问题标题】:Exclude sortable items dynamically on "start"在“开始”时动态排除可排序项目
【发布时间】:2013-07-17 21:37:03
【问题描述】:

我希望能够根据被拖动的特定项目“冻结”可排序列表中的某些项目。所以基本上是这样的:

<ul class="sortable">
   <li class="special">Item 1</li>
   <li>Item 2</li>
   <li class="lock-me">Item 3</li>
</ul>

js

$( ".sortable" ).sortable({
    start : function(e, ui){
        if(ui.item.hasClass('special')){
            $( ".sortable" ).sortable('option', 'items', ':not(.lock-me)');
        }
    },
    stop : function(e, ui){
        $( ".sortable" ).sortable('option', 'items', 'li');
    }
});

这可能吗?或者也许还有其他方法可以解决这个问题?

这是JSFiddle

【问题讨论】:

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


    【解决方案1】:

    您没有正确使用items 选项:

    http://jsfiddle.net/4uxXY/

    $(function() {
        $( ".sortable" ).sortable({
            items: ':not(.lock-me)'
        });
     });
    

    阅读您的评论。我误会了。

    添加$( ".sortable" ).sortable( "refresh" ); 为我解决了这个问题。

    这里有两个选项:

    http://jsfiddle.net/epLYY/

    $(function () {
        $(".sortable").sortable({
            items: ':not(.lock-now)',
            start: function (e, ui) {
                console.log('started');
                if (ui.item.hasClass('special')) {
                    console.log('item was .special');
                    $('.sortable .lock-me').addClass('lock-now');
                    $( ".sortable" ).sortable( "refresh" );
                }
            },
            stop: function (e, ui) {
                console.log('stopping');
                $('.sortable .lock-me').removeClass('lock-now');
            }
        });
    });
    

    http://jsfiddle.net/4G67x/

    $(function() {
        $( ".sortable" ).sortable({
            start : function(e, ui){
                if(ui.item.hasClass('special')){
                    $( ".sortable" ).sortable('option', 'items', ':not(.lock-me)').sortable( "refresh" );
                }
            },
            stop : function(e, ui){
                $( ".sortable" ).sortable('option', 'items', 'li');
            }
        });
     });
    

    【讨论】:

    • 您的代码使 .lock-me 项目始终无法排序。我正在寻找的是一种在拖动 .special 项目时使 .lock-me 项目无法排序的方法。即 .lock-me 项目在其余时间仍然是可排序的
    • 做到了!谢谢杰森
    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 2013-06-10
    • 2012-06-26
    • 1970-01-01
    • 2021-06-10
    • 2012-03-20
    • 2019-10-30
    • 1970-01-01
    相关资源
    最近更新 更多