나는 draggable
목록과 sortable
목록을 가지고 있습니다. draggable
목록에는 가능한 모든 항목이 있습니다. sortable
목록은 사용자가 선택한 것입니다.취소 가능한 정렬 가능한 이벤트를 중지하는 방법
sortable
에 receive
에 대한 검사를 수행하여 항목이 이미 있는지 확인하고, 그렇다면 정렬을 중지하고 revert
항목을 드래그 할 수있는 목록으로 되돌리려합니다. 그러나 cancel
이벤트가 발생해도 update
이벤트가 계속되고 되돌리기가 발생하지 않습니다.
무엇이 누락 되었습니까?
는 여기에 바이올린입니다 : http://jsfiddle.net/XW48M/1/
HTML :
<div class="container-fluid">
<div class="row">
<div class="col-md-5">
<ul id="teams" class="list-group">
<li class="list-group-item poll-assets" data-id="1" data-name="Team 1">Team 1</li>
<li class="list-group-item poll-assets" data-id="2" data-name="Team 2">Team 2</li>
<li class="list-group-item poll-assets" data-id="3" data-name="Team 3">Team 3</li>
</ul>
</div>
<div class="col-md-5">
<ul id="poll" class="list-group">
<li id="1" class="list-group-item poll-item" data-id="1" data-name="Team 1">Team 1</li>
<li id="4" class="list-group-item poll-item" data-id="4" data-name="Team 4">Team 4</li>
<li id="5" class="list-group-item poll-item" data-id="5" data-name="Team 5">Team 5</li>
</ul>
</div>
</div>
</div>
자바 스크립트 : 당신은 드래그 + 정렬 대신이 연결 sortables 갔다 왜 아주 이해가 안
$(document).ready(function() {
$("#poll").sortable({
revert: true,
update: function (event, ui) {
console.log('update');
var order = $("#poll").sortable("toArray");
if ($(ui.item).hasClass('ui-draggable')) {
$(ui.item).addClass('poll-item').removeClass('ui-draggable draggable').attr('id', $(ui.item).data('id'));
}
},
receive: function (event, ui) {
console.log('receive');
var order = $("#poll").sortable("toArray");
var id = $(ui.item.data('id'));
if ($.inArray(id, order)) {
$("#poll").sortable('cancel');
console.log('CANCELLED');
return;
} else {
$(ui.item).remove();
}
}
}).disableSelection();
$('#teams')
.find('.poll-assets').draggable({
opacity: 0.75,
appendTo: document.body,
helper: 'clone',
connectToSortable: '#poll',
}).disableSelection();
});
여기에 코드를 게시하시기 바랍니다 방문자가 SO. –