1

例として、ページに多くの行がある行ごとに3つのdivボックスを表示する次のコードがあります

      <div id='row1col1' class='duty' style="top:50px ; left:50px " ></div>
      <div id='row1col2' class='duty' style="top:50px ; left:150px " ></div>
      <div id='row1col3' class='duty' style="top:50px ; left:250px " ></div>
      <div id='row2col1' class='duty' style="top:150px ; left:50px " ></div>
      <div id='row2col2' class='duty' style="top:150px ; left:150px " ></div>
      <div id='row2col2' class='duty' style="top:150px ; left:250px " ></div>
      <div id='row3col1' class='duty' style="top:250px ; left:50px " ></div>
      <div id='row3col2' class='duty' style="top:250px ; left:150px " ></div>
      etc

私がやりたいことは、新しいdivを動的に配置し、そのすぐ上のdivのidまたはその他の属性に応じて変更することです。これが親になるとは思わないので、このデータを取得する方法はありますか? 「上」と「左」の位置を知っているので、この方法でdivのIDを取得できますか?

何か助けてください?

4

1 に答える 1

0

目標を達成するためのより良い方法がある可能性があります。ただし、この関数は、あなたが望んでいると私が思うことを行います:

function findAbove(selector, x, y) {
    var maxpos = 0, maxel;
    jQuery(selector).each(function(i, el) {
        var $el = jQuery(el),
            ex = parseInt($el.css('left')),
            ey = parseInt($el.css('top'));
        if (ex < x && ey < y && ex + ey > maxpos) {
            maxpos = ex + ey;
            maxel = $el;
        }
    });
    return maxel;
}
// Pass the coordinates of the new div
findAbove('.duty', 250, 250).css('border','2px solid green');

新しい div がその上の div と完全に一致することがわかっている場合は、 に変更ex < xex == xex + ey(両方とも) に変更する必要がありますey

于 2013-02-23T22:05:17.380 に答える