代码之家  ›  专栏  ›  技术社区  ›  gautamlakum

jquery可拖放问题

  •  0
  • gautamlakum  · 技术社区  · 15 年前

    我有一个与jquery相关的可拖动和可下拉的问题。这是我想做的事情的描述。

    第一: 我有两个沙发。一个是 <div id="selected"> 另一个是 <div id="container"> . "容器“有30个 <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>29</li>
                 <li>30</li>
        </ul>
    </div>
    

    第二个: 我想允许任何10个 <理工大学; s从“容器”到“选定”部分。如果有人试图添加11 <理工大学; ,则不能允许用户使用。那是第11次 <理工大学; 要插入到“selected”中的内容必须使用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 >= 10) {
                        $("#container li").draggable({ revert: true });
                    } else {
                        //$("#container li").draggable({ revert: false });
                    }
                }
        });
    });
    

    这个很好用。

    第三: 但当我拖动 <理工大学; 从“selected”到“container”,“selected”部分只有9个 <理工大学; 所以在这种情况下,稍后用户应该能够添加另一个 <理工大学; 从“container”部分转到“selected”部分,但不幸的是它不起作用。所有的 <理工大学; s我尝试拖放到“选定”中,由于 if (total >= 10 ) 条件。

    有人能帮我解决这个问题吗?拜托。。。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Dr.Molle    15 年前

    我建议使用可分类的,因为它在某种程度上与两个分区的Draggables和Droppebles相同。

    这不是很难分类,有一个接收事件。观察此事件并统计所选的LI的内部,如果超出允许范围,则可以取消当前排序。

    小提琴: http://jsfiddle.net/doktormolle/K7kDz/

        2
  •  0
  •   Zathrus Writer    15 年前

    第一 -我相信你应该把ul设置为可下拉,而不是DIV,否则你会在ul之外结束(你可以设置ul的样式来填充整个DIV,所以当元素在它上面时,它仍然会触发可下拉部分)

    $("#selected ul.sortable-list").droppable({
        ......
    });
    

    第二和第三 -你还有另外一部分设置为“还原为错误”注释掉…这只是这个例子,还是您忘记了这里的评论?(这就是它不起作用的原因)

    } else {
        // $("#container li").draggable({ revert: false });
    }
    

    还有-你试过了吗? Firebug 当你把这些列表拖出来的时候,你真的没有把它们放在所选的分区中吗?