禁用某些div中的拖放

时间:2015-02-11 12:41:40

标签: javascript jquery

当ui id值为" comp"时,我在禁用可排序函数方面遇到了一些问题。我不太确定出了什么问题,希望有人可以帮助我。

$(".sort").sortable({ // begin sortable
        connectWith: ".sort",
        receive: function(event, ui) { // begin receive
            var id = $(ui.item).attr('id');
            var status = this.id;
            //alert(status);
            if(status == "comp")
            {
                alert(status),
                 $('.sort').sortable("disable");
            }
            .always(function(){
            window.location.reload();
            });
        }, // end receive
    }) // end sortable

2 个答案:

答案 0 :(得分:0)

由于可排序插件中的items选项,它比您想象的更简单。在您的情况下,它将(假设可排序元素被标识为li):

$(".sort").sortable({
   items: "li:not(#comp)"
});

<强> Fiddle

修改

要停止对特定接收元素进行排序,您可以按如下方式更新代码。

<ul class="sort">
    <li>elem1</li>
    <li>elem2</li>
    <li>elem4</li>
    <li>elem5</li>
    <li>elem6</li>
</ul>

<ul class="othersort">
    <li id="comp">elem3</li>
</ul>

这是jQuery所需的代码。

$(".sort").sortable({
   items: "li:not(#comp)"
});

$(".othersort").sortable({
   connectWith: ".sort"
});

外部元素(#comp)可以在现有列表中拖动到特定位置(如您所愿),但是当它在里面时,它就不能再被排序了。

Fiddle

答案 1 :(得分:0)

如果您尝试使用receive事件,那么除了一些语法错误之外,您并没有太远。 如果您不希望在接收事件中发生这种情况,您可以轻松地在these events的任何一个上更改相同的逻辑。我希望这会有所帮助,如果您有任何问题,请告诉我。

修改

DEMO

也更新了代码:

HTML :提供您不希望在课堂上排序的<li>

<ul id="comp" class="sort">
    <li class="unsortable">7</li>
</ul>

SCRIPT :然后你可以取消该课程。

$(".sort").sortable({
    connectWith: ".sort"
});

$(".sort").sortable({
    items: "ul:not(#comp)",
    cancel: '.unsortable'
});