Имам ul
елементи с възможност за плъзгане (#doc-editor-options ul li)
, област за пускане на тези елементи (#doc-editor-content)
и ul
в тази област за задържане на тези елементи (#items-holder)
, която може да се сортира. Това плъзгане и пускане е само еднопосочно, само елементи от списъка могат да се плъзгат и пускат в държача.
$("#doc-editor-options ul li").draggable({
helper: 'clone',
connectToSortable: '#item-holder',
containment: $(".doc-editor")
});
$("#doc-editor-content").droppable({
drop: function(e, ui){
console.log('dropped');
}
});
$("#item-holder").sortable({
placeholder: 'placeholder-highlight',
cursor: 'pointer',
});
Два въпроса, които имам:
- Точно сега, когато плъзгам елемент от списъка и го пускам в другия списък, обратното извикване
drop
за.droppable()
се извиква два пъти. Мисля, че това има нещо общо с възможността за сортиране на#item-holder
. Искам да се задейства само когато пусна елемент в списъка и знам само заevent
иui
на този елемент в обратното извикване. - Също така имам нужда от функционалността, при която по подразбиране
items-holder
не може да се сортира. Единственият път, когато става сортируем, е когато плъзгате и задържате елемент върху него. Така че не мога да сортирам списъка по подразбиране, но ако плъзна елемент върху него, мога да избера къде да поставя този елемент в списъка (т.е. списъкът вече може да се сортира) и след като го пусна, списъкът става несортиран отново.
РЕДАКТИРАНЕ: Разбрах #2, трябваше да свържа mousedown
към елементите, които могат да се плъзгат, което позволява сортирането и след това го деактивира на mouseup
. Все още имам проблеми с #1, изглежда, че някои от събитията sortable
задействат обратното извикване drop
, когато пусна елемент вътре или изляза от държача на елемента.