【发布时间】:2013-09-10 23:01:17
【问题描述】:
首先,我知道这个问题以前在这个网站和其他网站上都被问过,但是对于我的场景来说,答案都是垃圾(如果它们不是完全垃圾的话),并且(至少对于这里的问题:@ 987654321@),建议只是完全关闭.sortable,这肯定不是我想做的。
好的,我有这个 jquery(如果任何选项或 html id 看起来很傻,请记住,这只是为了测试,所以我可以尝试解决这个问题):
$(function () {
$("#sortable").sortable({
revert: true
});
$("#draggable, #draggable2").draggable({
connectToSortable: "#sortable",
helper: "clone",
revert: "invalid"
});
$("#sortable").droppable({
drop: function (event, ui) { alert("done been triggered."); }
});
$("ul, li").disableSelection();
});
这是有效的标记:
<div class="objectPaletteHolder">
<ul>
<li id="draggable" class="ui-state-highlight">Drag me down</li>
<li id="draggable2" class="ui-state-highlight">Drag this down, too</li>
<li id="draggable2" class="ui-state-highlight">Drag this down, also</li>
<li id="draggable2" class="ui-state-highlight">Drag this down, as well</li>
<li id="draggable2" class="ui-state-highlight">Drag this down, too</li>
<li id="draggable2" class="ui-state-highlight">Drag this down, too</li>
<li id="draggable2" class="ui-state-highlight">Drag this down, too</li>
<li id="draggable2" class="ui-state-highlight click">Drag this down, click</li>
<li id="draggable2" class="ui-state-highlight clicky">Drag this down, clicky</li>
</ul>
</div>
<div class="editContainer">
<ul id="sortable">
<li class="ui-state-default">Item 1</li>
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
<li class="ui-state-default">Item 4</li>
<li class="ui-state-default">Item 5</li>
</ul>
</div>
我没有重叠的sortable div 或类似的东西,我想我理解'为什么'会发生这种情况(因为sortable 默认获得可拖动属性?),我只是似乎对此无能为力。
当然,问题在于...
drop: function (event, ui) { alert("done been triggered."); }
...被触发了两次,而它只需要一次。
我认为这个问题会有一个简单的解决方案,因为如果这个问题需要大量复杂的脚本来解决,那么我认为这些特殊的 jquery 小部件不值得这么麻烦。也许我只是糊涂了?
【问题讨论】:
-
@Itay 应要求:jsfiddle.net/dMen8/6
标签: jquery jquery-ui jquery-ui-droppable