jquery сортируемый / перетаскиваемый двойной выстрел
У меня есть код перетаскивания, который работает нормально, как есть. Просто есть маленький запрос. Я заметил, что если я добавляю оповещение в функцию удаления для целей отладки (например, alert(draggedItem.text());), оно запускает оповещение дважды, когда я помещаю что-либо в область перетаскивания. В другом посте я читал, что использование droppable & sortable вместе приводит к возникновению этого странного двойного события. Но мне нужно использовать событие droppable, чтобы получить перетаскиваемый объект item (ui.draggable) - так я могу манипулировать им, когда я его сбрасываю. Если есть какой-то другой способ получить перетаскиваемый объект, пожалуйста, скажите мне:) Также, если у вас есть объяснение, почему это происходит, это было бы интересно...
$(".field > li").draggable({
helper:'clone',
opacity: 0.4,
connectToSortable:'.dragrow'
});
$(".dragrow").droppable({
drop: function(e, ui) {
draggedItem = ui.draggable;
//alert(draggedItem.text());
}
}).sortable({ //code here to do stuff with 'draggedItem'
У меня также есть другой запрос, связанный с этим, но так как мой код довольно большой, я не могу опубликовать полную информацию здесь. Так что я понимаю, если вы не можете помочь - просто если что-то приходит на ум, это было бы действительно здорово. По сути, у меня есть список "блоков", которые я могу перетащить в несколько строк. Отдельные строки могут быть скрыты с помощью события переключения. Если у меня есть 3 ряда, я могу перетащить блоки в любой из них. Если затем я спрячу первый, я не смогу перетащить его в другие два ряда. Я все еще могу сортировать их, хотя. И как только я начну сортировать их, я снова смогу перетаскивать их. Weird...
2 ответа
Проверьте ДЕМО http://jsfiddle.net/yeyene/FUyTe/1/
Как вы упомянули, да, совместное использование droppable & sortable приводит к возникновению этого странного двойного события. Но, если вы все еще хотите использовать draggedItem object
Вы все еще можете использовать это с возможностью сортировки получения.
А также, вы можете использовать ui.item
чтобы получить текущий перетаскиваемый элемент.
Попробуйте прокомментировать и отключить каждое предупреждение и посмотреть, теперь оно срабатывает только один раз.
$(".field > li").draggable({
helper:'clone',
opacity: 0.4,
connectToSortable:'.dragrow'
});
$(".dragrow").droppable({
drop: function(e, ui) {
draggedItem = ui.draggable;
}
}).sortable({
receive: function(e, ui) {
// here is the draggedItem object of "droppable"
alert(draggedItem.text());
// here is the draggedItem object of "sortable"
draggedItem2 = ui.item;
//alert(draggedItem2.text());
}
});
Вот один из способов изменить html удаленного элемента.
Вы проверили, что у вас нет тега jquery-скрипта на вашем сайте дважды?