jQuery draggable revert基于条件

gau*_*kum 8 javascript jquery jquery-ui jquery-plugins

我有一个与jQuery draggable和droppable相关的问题.这是描述我想要做的事情.

第一:我有两个div.一个是<div id="selected">另一个是<div id="container">."容器"有10个<li>可拖动并可放入"选定"的容器.这是代码:

<div id="selected">
    <ul class="sortable-list">
    </ul>
</div>


<div id="container">
    <ul class="sortable-list">
             <li>1</li>
             <li>2</li>
             <li>....</li>
             <li>9</li>
             <li>10</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

第二:我想允许<li>从"容器"到"选定"div的任何5 秒.如果有人试图添加第6个<li>,那么它一定不允许用户使用它.那个<li>将被插入"selected" 的第6个必须使用jQuery draggable选项revert来恢复.

$("#container li").draggable({ revert: true }); 这是javascript代码.

$(document).ready(function(){

    var total = 0;
    $("#selected").droppable({
        drop: function() {
                total = $("#selected li").length;
                //alert(total);
                if (total >= 5) {
                    $("#container li").draggable({ revert: true });
                } else {
                            // below code is not working
                    $("#container li").draggable({ revert: false }); // this is making whole feature weird. I can drag all the <li> anywhere
                }
            }
    });
});
Run Code Online (Sandbox Code Playgroud)

这工作正常.

第三:但是当我<li>从"选定" 拖动到"容器"时,"选定"的div只有4 <li>秒.所以在这种情况下,以后用户应该能够<li>从"容器"div 中将另一个添加到"selected"div中.但不幸的是它没有用.<li>由于if (total >= 5 )条件原因,我试图拖放到"已选中"的所有s都将被恢复.

任何人都可以帮助我使用draggable revert选项解决这个问题吗?请...

Nic*_*ver 17

您可以使用带有函数的accept选项来更轻松地执行此操作,如下所示:

$("#selected ul").droppable({
    accept: function() {
        return $("#selected li").length < 5;
    }
});
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.当你拖出元素时,.length它会下降并且它会再次接受元素......没有理由变得更复杂:)