【问题标题】:dragging same element li of div second time should not be drag and drop第二次拖动 div 的同一个元素 li 不应该是拖放
【发布时间】:2012-11-08 08:20:01
【问题描述】:

当将一个元素从<div id="catalog" > 拖放到一个框即<div id="dialogIteration"> 时工作正常。但是当第二次拖放相同的元素时,它很容易被丢弃但我想要它不应该删除并发出“语句已退出”的警报。

示例代码http://jsfiddle.net/coolanuj/7683X/28

【问题讨论】:

    标签: jquery html jquery-ui-draggable jquery-ui-droppable


    【解决方案1】:

    在你的draggable 中使用一个标志来表明它是否已经被放到你的对话框中。

    drop: function (evt, ui) {
        // logic
        if (ui.draggable.attr('data-dropped')) {
            // don't perform the drop
        } else {
            // perform the drop
            ui.draggable.attr('data-dropped', true);
        }
    }
    

    如果您只想让当前被丢弃的那个不再是droppable,那么在成功丢弃时重置draggable 属性。

    drop: function (evt, ui) {
        // logic
        if (ui.draggable.attr('data-dropped')) {
            // don't perform the drop
        } else {
            // perform the drop
            $('tag[data-dropped=true]').attr('data-dropped', false);
            ui.draggable.attr('data-dropped', true);
        }
    }
    

    【讨论】:

    • D-Infragistics:感谢您的宝贵回答。代码正在运行,甚至我也收到了我已添加到此代码中的警报。但我的要求是,如果我第二次开始拖动相同的元素,那么只有我应该得到一个警报 - “这个元素已经被拖动了”
    • 然后在拖动方法里面进行检查。取消拖动事件和警报。
    • D-Infragistics:感谢您的回答。我还有一个问题。我在这里发布了一个问题,但仍然没有人回答它,你能帮帮我吗?链接在这里 stackoverflow.com/questions/13264318/dragging-and-dropping-one-dialog-box-into-another-box-adding-unnecessarily-scroll#comment18109544_13264318
    【解决方案2】:

    这是一个例子:http://jsfiddle.net/7683X/35/

    我使用:contains选择器来检查文本是否已经被拖放到可放置元素中:

    drop: function(event, ui) {
        if($("#dialogIteration ol:contains('"+ui.draggable.text()+"')").length > 0)
        {
           alert("Statement already exits");
           return false;
        }
    
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      相关资源
      最近更新 更多