2009-04-08 17 views
2

オブジェクトがマウスオーバーしている場合は、そのオブジェクトを取得できます。私はいつでもマウスの座標を得ることができます。マウスと異なる場合、座標を与えられたオブジェクトをどのように取得するのですか?javascriptイベントを呼び出すか、XY座標からオブジェクトを取得する

本質的に、ユーザーは画面上の特定の場所にdivをドロップしています。 divはマウスのカーソルよりも広いので、divの角が終わっているオブジェクトが何であるかを知る必要があります。 JSでmousemoveイベントを発生させる方法はありますか?それを座標に渡しますか?
おかげ


この記事を読んで他の人のためだけで簡単にポストスクリプト。私は私の答えにjqueryを選んでいませんでしたが、それはあなたの答えかもしれません。これは、私たちが提供したい多くのクライアントサイドツールにとって非常に柔軟な機能豊富なソリューションであるようです。

答えて

1

のMouseMoveを上げ、それはありません、結果のターゲット要素のプロパティを埋める持っている方法はありません。

任意の座標から要素を取得する方法はありますが、あまり好きではありません。各ページ要素を歩き、offsetLeft/Top/Parentから次元を計算し、どの要素が(計算されたスタイルのpositionとz-indexから)他の要素をオーバーレイしているかを基本的には、スクリプトのブラウザ独自のレイアウトエンジン。また、 'overflow' scroll/autoを持つ要素がある場合は、さらに計算が必要になります。

制限がある場合(たとえば、他の静的に配置されたdivの間にdivを置くことしかできません)、管理は可能ですが、一般的なケースは非常に難しく、決して楽しいものではありません。 (たぶんどこかの人がそのような機能をライブラリやフレームワークのプラグインにパッケージ化しているかもしれませんが、私はまだ一度も会っていません)

drag'n'dropをうまく動作させる別の方法が見つかった場合、あなたはこれをやる必要がありますし、それをしてください!

+0

私はそれを恐れていました。 jQueryが 'that'ライブラリであるようです。私が見つけたときに私はさらに投稿します。 – Praesagus

+0

jQueryコアはそれをしません。私がまだ見たことがないどこかでjQueryプラグインがあるかもしれません...幸せな狩り! – bobince

+0

jquerys UIコアです。残念ながら私はいくつかの機能を追加する必要がありました。検索を高速化するために、大きなアイテム(例えばテーブル)を見てから、クリックがその要素内にあった場合、その子を介して見ました。それは痛いですが、それは動作し、それは速いです。ありがとう – Praesagus

1

質問に直接回答していませんが、jQuery UIなどのjavascriptライブラリを使用してみましたか?それは良いドラッグ/ドロップのサポートを提供します&あなたが話すことの種類を行うことができます...例えば。あなたのページの特定の要素をドラッグ可能にすることができます& others droppable &ユーザーが要素をドラッグするとイベントを処理します。これは、 'タッチ'(「フィット」、「交差」、「ポインタ」など)を含むドロップアラウンドに許容範囲を提供するので、ドロップ可能なターゲットの「オーバー」イベントを処理できます&イベントを取得しますdivの角が指定された要素の上にあるときに発生するハンドラです。このイベントハンドラは、ドラッグされている要素とドラッグされている要素への参照を提供します。 (質問にどのように逆戻りしたのか、同じ問題を解決するには使えるはずです)。

希望いくつかの助けのだと...

+0

これは私の解決策であるかもしれませんが、私はそれを調べ、答えとしてあなたのものを選択します。 – Praesagus

0

オブジェクトを座標から取得するには、document.elementFromPoint(x,y)があります。 Quirksmodeのcompatibility tableは、最新のブラウザで利用可能であることを示しています。

関連する問題