Я пытаюсь поместить сортируемый список jquery-ui в разделы аккордеона и подключить эти списки. Идея состоит в том, чтобы создать компактный и интуитивно понятный интерфейс для сортировки элементов по нескольким различным категориям. Элементы обычно сортируются в пределах одного раздела, но иногда они могут быть перенесены в другой раздел «аккордеон».
Я почти там: http://jsfiddle.net/arasbm/H5MRw/7/
Вот образец HTML-кода:
<div id="accordion">
<h3 class="accordion-header"><a href="#">good</a></h3>
<div class="accordion-section">
<ul class="sortable-list">
<li>dog</li>
<li>butter</li>
</ul>
</div>
...
</div>
И javascript:
// Setup the accordion
$("#accordion").accordion();
var $accordion = $("#accordion").accordion();
//Setup the sortable list
$("ul.sortable-list").sortable({
connectWith: "ul.sortable-list", // connect all sortable lists together so items can be dragged from one list to aother
stop: function(event, ui) {
console.log("an item was moved");
}
}).disableSelection();
$("h3.accordion-header").droppable({
over: function(event, ui) {
//it would be ideal to have some sort of tollorance or delay so user does not accidentally expand another section or accordion
$(this).css('color', 'red');
$accordion.accordion('activate', $(this));
},
out: function(event, ui) {
$(this).css('color', 'green');
}
});
Часть, которая еще не работает, показывает пользователю правильную визуальную обратную связь, пока элемент перетаскивается из одного списка в другой. Когда пользователь перетаскивает элемент поверх заголовка другого раздела аккордеона, этот раздел активируется, однако по какой-то причине элемент, использованный во время перетаскивания, каким-то образом исчезает. Элемент на самом деле все еще там, и если вы продолжите перетаскивать его в список, вы увидите, что отображается заполнитель, и вы можете перетащить элемент в новое место.
Как я могу исправить эту реализацию, чтобы пользователь мог видеть элемент, который он перетаскивает, даже когда он переходит в другой раздел аккордеона. Буду признателен за любую помощь в решении этой проблемы, но используйте jsFiddle, который я предоставил, чтобы продемонстрировать вашу решение.