1

Usingelement.offset().leftは、要素の親からのオフセット位置を取得します。別の要素からオフセット位置を取得する方法はありますか? たとえば、ここに私のhtmlがあります:

<div id="tile_id_579" class="product_tile">  
<div class="selectContainer">
    <table style="width:100%;">
        <tbody>
            <tr>
                <td>        
                <div id="select-undefined" class="tzSelect">
                    <div id="options-undefined" class="tzOptions" style="max-height: 500px; width: 250px; display: none; min-width: 118px;">
                        <ul class="dropDown" id="dropdown-undefined">
                            <li><div class="header">Hand-Tossed Style Pizza</div>
                                <div class="subheader">The crowd-pleasing pizza that everyone can agree on.</div>
                                <div class="optkey">0</div>
                            </li>
                            <li><div class="header">Pan Pizza</div>
                                <div class="subheader">Our Pan Pizza is America's favorite!</div>
                                <div class="optkey">1</div>
                            </li>
                        </ul>
                    </div>
                </div>
                </td>
            </tr>
        </tbody>
    </table>
</div>
</div>

データベースから生成されます。を使用すると、divoffset().leftからのオフセットが取得されますが、 div から div#selecct-undefinedまでの距離を取得する必要があります。これは可能ですか?#options-undefined.selectContainer

編集して追加

これらの両方を試してみましたが、どちらも同じものを返します: 上: 381、左: 0。ただし、ドキュメントに関して左は 0 ではありません。それはできません。

var tip = $('#tile_id_579 #options-undefined .header');
tip.first().position();

var tip = $('#tile_id_579 #options-undefined .header');
tip.first().offset();

これがdivの場所である場合、両方の左が0になる可能性はありますか? 0 left は、ブラウザ ウィンドウの左側にあるという意味ではありませんか?

ここに画像の説明を入力

4

1 に答える 1

0

要素は実際に指定した親内にあるため、.offset() の代わりに .position() を使用できます。ただし、 .selectContainer が最も近い相対親でない場合は、要素とその「他の」要素の両方の位置を取得し、差を計算する必要があります。

var myPos = $('#options-undefined').offset();
var otherPos = $('#options-undefined').closest('.selectContainer').offset();//if #options-undefined wasn't a child of .selectContainer you would do $('.selectContainer').offset();

var _offset = {
    top: otherPos.top - myPos.top,
    left: otherPos.left - myPos.left
}
于 2012-12-11T18:09:29.390 に答える