javascript - 如何允许用户单击可放置的 div,以便在单击可放置的 div 后禁用另一个 div 的放置功能

标签 javascript jquery jquery-ui drag-and-drop droppable

我对 jquery 很陌生。目前我正在开发一个购物车项目,其中有三种类型的元素(item1,item2,item3)和三个袋子(bag1,bag2,bag3),一个购物车例如 bag1 接受 item1,item2,item3 , bag2 接受item2、item3 和 bag3 只接受我迄今为止开发的 drop 上的 item3。

现在我想添加附加功能,例如用户应首先选择(单击)任何一个袋子(例如 bag1),然后尝试将元素放入 bag1 中,以便禁用其他两个袋子的放置功能(其他袋子)不应接受任何元素,即使该包可以接受),如果用户选择其他包,也应反转。

请尝试一下。我真的需要帮助。

<强> http://jsfiddle.net/Vwu37/15/

html

<div class="bag1" ><p>bag1</p></div>
<div class="bag2" > <p>bag2</p></div>
<div class="bag3" ><p>bag3</p></div>
<div class="item1"><p>item1_1</p></div>
<div class="item1"><p>item2_1</p></div>
<div class="item1"><p>item2_1</p></div>   

js

$('.bag1').droppable({
                accept: '.item1,.item2,.item3',
                 onDragEnter:function(e,source){
                    $(source).draggable('options').cursor='auto';
                },
                onDragLeave:function(e,source){
                    $(source).draggable('options').cursor='not-allowed';
                },
                onDrop:function(e,source){
                    var name = $(source).find('p:eq(0)').html();
                    var price = $(source).find('p:eq(1)').html();
                    addProduct(name, parseFloat(price.split('$')[1]));
                }
            });

            $('.bag2').droppable({
                accept: '.item2,.item3',
                onDragEnter:function(e,source){
                    $(source).draggable('options').cursor='auto';
                },
                onDragLeave:function(e,source){
                    $(source).draggable('options').cursor='not-allowed';
                },
                onDrop:function(e,source){
                    var name = $(source).find('p:eq(0)').html();
                    var price = $(source).find('p:eq(1)').html();
                   }
            });

            $('.bag3').droppable({
                accept: '.item3',
                onDragEnter:function(e,source){
                    $(source).draggable('options').cursor='auto';
                },
                onDragLeave:function(e,source){
                    $(source).draggable('options').cursor='not-allowed';
                },
                onDrop:function(e,source){
                    var name = $(source).find('p:eq(0)').html();
                    var price = $(source).find('p:eq(1)').html();
                                    }
            });

最佳答案

这里有一个非常简单的方法来为 bag1 执行此操作:jsfiddle 请注意,目前我刚刚做了:

$('.bag1').click(function(){
//在此处禁用其他可放置项
});

您可能需要删除此硬代码并编写更通用的方法来禁用您的包。 我建议您浏览draggabledroppable jquery.ui api 方法并找到最适合您需求的一种。因为您可以通过检查使用的拖动项目和转换袋来防止在转换时立即转换。

更新:
开始时,行李托运全部被禁用 here 。如果您单击其中任何一个,它将再次启用并可删除。

关于javascript - 如何允许用户单击可放置的 div,以便在单击可放置的 div 后禁用另一个 div 的放置功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965965/

相关文章:

javascript - 如何将 Jquery slider 保留在某些 html 表格单元格中某些文本的右侧?

jquery-ui - 在 jQuery UI 1.10 中的对话框标题中使用 HTML

javascript - Firefox WebExtention API : TypeError: browser. browserAction 未定义

javascript - 在方法内动态声明新的 "Class fields"- 好习惯与否?

javascript - 如何找到 '' Outlook 兼容邮件设计器工具”

javascript - 从数据库中检索数据并显示在文本框中

jquery - 在滚动条上显示 CSS 动画

javascript - 无法让 <div> 使用 jQuery 改变颜色

javascript - Bootstrap 切换按钮不起作用

javascript - Jqueryui draggable 在我的元素上留下类。为什么?