Я пытаюсь собрать следующее с помощью jQuery и Sortable: Есть два случая, которые мне нужно захватить:
- A: переместите элемент в том же списке
- B: переместить элемент из одного списка в другой.
Случай B разрешается только при использовании события receive
. Но если я связываю оба receive
и stop
, они также запускаются как при перемещении элемента из одного списка в другой.
Это делает невозможным захват случая A, потому что у меня нет способа узнать, был ли элемент перемещен из другого списка или внутри него. Надеюсь, что это имеет смысл.
Это немного странно, потому что я считаю, что мой прецедент является наиболее используемым.
Я жажду идей. Если вы хотите попробовать, см. http://jsfiddle.net/39ZvN/5/.
HTML:
<div id="list-A">
<ul class="sortable">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</div>
<br />
<div id="list-B">
<ul class="sortable">
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
</ul>
</div>
JS:
$(function() {
$('.sortable').sortable({
stop: function(event, ui) {
// Wird auch aufgerufen wenn von Liste X nach Liste Y gezogen wird
if(!ui.sender) alert("sender null");
else alert("sender not null");
},
receive: function(event, ui) {
// Funktioniert top, damit kann ich Fall B abfangen
alert("Moved from another list");
},
connectWith: ".sortable"
}).disableSelection();
});