0

当将一个元素从一个盒子拖放<div id="catalog" >到一个盒子<div id="dialogIteration">时,工作正常。但是当第二次拖放同一个元素时,它很容易被丢弃但我想要的是它不应该被丢弃并警告“声明已经退出” 。

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

4

2 回答 2

2

在你的内部使用一个标志,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);
    }
}
于 2012-11-08T08:28:21.037 回答
0

这是一个例子: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;
    }

    ...
}
于 2012-11-08T22:03:28.633 回答