У меня есть следующая проблема, у меня есть большое дерево, у которого есть подузлы, которые можно сложить и развернуть по требованию (данные в узлах извлекаются с помощью AJAX). Однако я использую jquery.event.drop / drag для создания моих целей перетаскивания.
Однако, когда я складываю / раскладываю, цели падения меняют положение, и мне нужно пересчитать. Вот как я хотел это сделать:
function create_drop_targets() {
$('li a')
.bind('dropstart', function(event) {
})
.bind('drop', function(event) {
})
.bind('dropend', function(event) {
});
}
create_drop_targets () вызывается при сворачивании / разворачивании.
Однако это не работает. Я нашел следующее в jquery.event.drop:
var drop = $.event.special.drop = {
setup: function(){
drop.$elements = drop.$elements.add( this );
drop.data[ drop.data.length ] = drop.locate( this );
},
locate: function( elem ){ // return { L:left, R:right, T:top, B:bottom, H:height, W:width }
var $el = $(elem), pos = $el.offset(), h = $el.outerHeight(), w = $el.outerWidth();
return { elem: elem, L: pos.left, R: pos.left+w, T: pos.top, B: pos.top+h, W: w, H: h };
}
Теперь мне нужно знать, как я могу снова вызвать метод setup (), чтобы он снова заполнял элементы $ новыми позициями для droppables.