16

divの名前がわかれば、divの場所を見つけるのはかなり簡単です。しかし、私が知っているのは画面のX / Yコードだけである場合、div idを取得する簡単な方法はありますか?

#HarbourRadarと呼ばれるボード(別のdiv)で、「#Items1」から「#Items50」という名前のdivの範囲内に重複するdivはありません。各div#Itemsには、複数のスタック画像を含めることができます。

とにかく、ある場所からdivを見つけるためのヒントをいただければ幸いです。

次のコード(こちら側の以下の回答から取得)は、div #HarbourRadarのIDを取得します。これは、div #markerがその上に階層化されているため、部分的に正しいですが、選択されたdiv#markerを返しません-つまり、Zインデックスが高いものです。

var pos = $("#marker").position();
alert(document.elementFromPoint(pos.left, pos.top).id);
4

2 に答える 2

18

ええ、それはdocument.elementFromPoint方法を使用して可能です。
これは、Microsoftによって文書化されている方法です。これがMozillaのドキュメントです。このブラウザの比較
でわかるように、この関数はほぼ完全に互換性があります。

MDNドキュメントのサンプルコードは次のとおりです。

function changeColor(newColor) {
  elem = document.elementFromPoint(2, 2);
  elem.style.color = newColor;
}
<p id="para1">Some text here</p>
<button onclick="changeColor('blue');">blue</button>
<button onclick="changeColor('red');">red</button>

于 2013-02-09T11:25:51.240 に答える
2

この既存の StackOverflow 会話を見てください。これが役立つ場合があります。

Javascript でマウス ポインターが上にある要素を特定する

これは JavaScript 関数を使用しdocument.elementFromPointており、実際の例を示す優れたデモがあります。

jsFiddle の URL はhttp://jsfiddle.net/MPTTp/です。

フィドルからのコード:

$(window).click(function(e) {
    var x = e.clientX, y = e.clientY,
        elementMouseIsOver = document.elementFromPoint(x, y);

    alert(elementMouseIsOver);
});
于 2013-02-09T11:48:23.497 に答える