Trước tiên, tôi biết câu hỏi này đã được hỏi trước đây, cả trong trang web này và các trang khác, nhưng câu trả lời là tất cả rác cho kịch bản của tôi (nếu chúng không hoàn toàn rác) và (ít nhất là cho câu hỏi ở đây: jQuery UI drop event of droppable fires on sortable), đề xuất chỉ là tắt hoàn toàn .sortable
, đó chắc chắn không phải là điều tôi muốn làm.Sự kiện thả xuống jQuery UI của tiện ích con có thể bị bắn hai lần
Được rồi, tôi có jquery này (lưu ý nếu bất kỳ tùy chọn hoặc id html trông ngớ ngẩn, đây chỉ là để thử nghiệm vì vậy tôi có thể thử và con số này ra):
$(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();
});
Và đây là hợp lệ đánh dấu:
<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>
tôi không có chồng chéo sortable
divs hoặc bất cứ điều gì như thế, và tôi nghĩ rằng tôi hiểu 'tại sao' này đang xảy ra (? vì sortable
được draggables tính theo mặc định), tôi chỉ có thể không S eem để làm bất cứ điều gì về nó.
Vấn đề, tất nhiên, là ...
drop: function (event, ui) { alert("done been triggered."); }
... được kích hoạt hai lần, khi nó chỉ cần một lần. Tôi sẽ nghĩ rằng sẽ có một giải pháp đơn giản cho vấn đề này, nếu vấn đề này đòi hỏi một loạt các kịch bản phức tạp để sửa chữa, hơn tôi nghĩ rằng các vật dụng jquery đặc biệt này sẽ không đáng giá. Có lẽ tôi chỉ bối rối?
Thế còn câu hỏi thì sao? – Itay
@Itay Theo yêu cầu: http://jsfiddle.net/dMen8/6/ – VoidKing