【问题标题】:Disable specific jQuery draggable out of many after that specific item has been dropped在删除特定项目后禁用特定的 jQuery 可拖动
【发布时间】:2012-02-28 23:19:21
【问题描述】:

我正在尝试使用 jQuery 可拖动和可放置来比较搜索结果。基本上,我将比较限制为 5 个项目。所以,我有 5 个可放置的框和一些可拖放到这些框中的图像。我试图确保当一个可放置的框已满时,它不能被重新填充,并且被拖入其中的项目不能被再次拖动。可拖动项目恢复为禁用状态。我设法禁用了最后一个放置的项目,但第二个结果根本无法拖动。所以,我的问题是:如何在删除特定图像后禁用拖动该图像,并且仍然允许将其他结果放入剩余的框中?此外,填充的可放置 div 不应该能够包含多个图像。涉及的代码很多,你可以在这里找到一个演示http://jsfiddle.net/SeasonEnds/VNzrB/

【问题讨论】:

    标签: jquery jquery-ui-draggable droppable


    【解决方案1】:

    您有多个 ID 为 productimage 的元素。我所做的只是将id="productimage" 的每个实例更改为class="productimage",然后将您的JS 更改为基于类而不是ID 进行选择。当浏览器通过 ID 查找元素时,一旦找到,浏览器就会停止查找,因为它假定每个 ID 都是唯一的:

    var $gallery = $(".productimage"),
    

    ...

    accept: ".productimage > .icon",
    

    http://jsfiddle.net/jasper/VNzrB/1/

    这将使每个draggable 元素都可以拖动。要做到这一点,您只能在 droppable 元素中放置一个 draggable,您可以在将某些东西放入其中时禁用每个 droppable 元素:

        drop: function(event, ui) {
            deleteImage(ui.helper);
            $(ui.draggable).draggable('disable');
    
            //disable the droppable element that just had a draggable dropped into it
            $(this).droppable('disable');
        }
    

    这是一个演示:http://jsfiddle.net/jasper/VNzrB/3/

    更新

    要仅更改克隆的 draggable 助手的高度/宽度,您可以将其定位为:$(ui.helper).css(...);

    变化:

        start: function() {
    
            $(".myCheckbox").prop("checked", true);
            $(".ui-draggable").not(this).css({
                height: 50,
                width: 50
            });
        },
    

    收件人:

        start: function(event, ui) {
    
            $(".myCheckbox").prop("checked", true);
            $(ui.helper).css({
                height: 50,
                width: 50
            });
        }
    

    请注意,您必须这样做

    在此处查看此更新:http://jsfiddle.net/jasper/VNzrB/4/

    【讨论】:

    • 基本的东西。感谢您认识到这一点。我在拖动时调整图像大小以适合这些框。我注意到您的解决方案会导致在拖动一张图像时重新调整所有图像的大小。我应该通过 id 定位特定的 ui-draggable 来修复 css 吗?你会怎么做呢?
    • @SeasonEnds 请参阅我的回答的更新。您可以通过访问传递给start 函数的ui 对象来定位正确的元素。
    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多