多くdiv
の が行と列に分散しています (jQuery を使用して生成)。これらdiv
の s はそれぞれ、JQuery UI Resizable を使用してサイズ変更できます。要件を定義するには、すべてdiv
ので絶対配置を使用する必要があります。したがって、これらの div のいずれかのサイズを変更すると、スクリプトはtop
これより下のすべての div の属性を更新する必要があります (現在のサイズ変更 div の後の同じ列と 1 行にあります)。
これは私が今持っているコードです:
updatePositions: function() {
var update = 0;
$(".element").resizable({
handles: 's',
start: function(event, ui) {
event.stopPropagation();
var el = $(this);
var el_row = parseInt(el.attr("row"));
var el_rel = parseInt(el.attr("rel"));
var el_col = parseInt(el.attr("col"));
update = $(".element").filter(function() {
return(
$(this).attr("row") > el_row &&
$(this).attr("col") == el_col &&
$(this).attr("rel") != el_rel
);
});
},
resize: function(event, ui) {
update.each(function(event){
var top = $(this).position().top + $(this).height() + 20;
$(this).css("top", top )
});
}
})
}
そして、ここに例があります: JSFiddle
ご覧のとおり、すべての div が適切に検出され、最上位の位置を更新できます。でもなぜかリサイズするとおかしくなっちゃう!選択した各divでタイルが見つかった回数だけ更新を行っているようです。