У меня есть несколько div на странице с переполнением: auto, у многих больше li, чем умещается в видимой области. Когда я перетаскиваю из одного div в другой, если div над целевым div имеет длинный список, $ (this) будет возвращать id этого div, а не div, в который попал мой элемент. Визуально и в исправленном html он работает нормально, но мне нужно иметь возможность получить идентификатор div, в котором он находится, и не могу понять это. Похоже, что должен быть обходной путь ???
Моя цель - надежно получить идентификатор получающего div. Местоположение не изменилось к моменту запуска события выпадения. Возможно, будет полезно инициализировать каждый сбрасываемый div по id в обратном порядке, а не использовать класс «sortable», но их может быть 10 или 15, и это выглядит ужасно неуклюже.
Вот мой код инициализации (после попытки жадного: true):
$( ".sortable" ).sortable({
connectWith : ['.sortable'],
dropOnEmpty : true,
placeholder : "ui-state-highlight",
revert: true,
start : function(event, ui) {
getEquip($(ui.item).attr('id').slice(8));
}
});
$( ".sortable" ).draggable({
helper: "clone",
revert: "invalid"
});
$( ".sortable" ).droppable({
greedy : true,
drop: function( event, ui ) {
var msg = 'Moved ' + $(ui.draggable).text() + ', id#' + $(ui.draggable).attr('id').slice(8) + ' to';
msg += ' ' + $(this).attr('id'); //<<== gives wrong id if list above is long
msg += ' ' + $('#' + $(ui.draggable).attr('id')).parent().attr('id');
writeFooter(msg);//Moved hydrant wrenches, id#164 to sortable16 sortable22
},
});