У меня есть пользовательский интерфейс, который позволяет сортировать ul
из li
.Для этого я использую jQuery-интерфейс sortable
.Однако сортировка по умолчанию отключена и активируется только по нажатию кнопки.В то же время у меня есть событие click для каждого li, которое отображает предварительный просмотр абзаца, который li представляет на экране сортировки.Это работает нормально, за исключением того, что если я активно сортирую, событие click также запускается.
Что происходит, каждый раз, когда я сортирую li
, я автоматически вижу предварительный просмотр, который я не делаюхочу случиться.Чтобы предотвратить это, я сделал следующее: событие click срабатывает только в том случае, если li
пропускает класс no_preview
.Этот класс добавляется к li
всякий раз, когда я начинаю сортировку, и удаляется, когда сортировка завершена.
jQuery('ul.wiki_ul_layout_coloumns>li:not(.no_preview)').live('click', function() {
//show preview
})
jQuery('ul.wiki_ul_layout_coloumns').sortable({
connectWith: 'ul.wiki_ul_layout_coloumns',
start: function(event, ui) {
jQuery(ui.item).addClass('no_preview');
},
stop: function(event, ui) {
jQuery(ui.item).removeClass('no_preview');
}
});
Тестируя это новое решение, я увидел, что создал условие гонки (поскольку оба реагируют на keyup).Теперь я могу решить эту проблему, добавив таймер к jQuery(ui.item).removeClass('no_preview')
, но я считаю, что это решение скорее для взлома.Есть ли правильный способ (или, по крайней мере, более хороший) для решения этой проблемы?
РЕДАКТИРОВАТЬ 1
Я обновил код, чтобы показать, что я использую несколько списков, которые связаны между собой.До сих пор я думал, что это не имеет отношения к проблеме.