0

システムの制約である別の問題を修正するために何かをハッキングしています。理想的ではありませんが..

とにかく、クリック/タッチを生成してから、poingの下の一番上の要素を見つける必要があります(300, 300)。使ってます:

event = $.Event( "mousedown", { pageX:300, pageY:300 } );
$("window").trigger( event );

それから私は聞いています:

$(window).bind 'mousedown', (jQueryEvent)->
    console.log jQueryEvent.target

ただし、event.target常にウィンドウを返しています。意味あり。ただし、私がやろうとしているのは、ページ全体でmousedownイベントを生成し、を使用event.targetして、の下にある要素を見つけること(pageX, pageY)です。これを行う方法はありますか?

4

3 に答える 3

1

完全な実装であるhttp://www.zehnet.de/2010/11/19/document-elementfrompoint-a-jquery-solution/をご覧になることをお勧めします。

于 2013-03-21T21:20:39.927 に答える
0

document.elementFromPointを見ましたか?これは、特定の位置にある要素を見つけるためのクリーンなアプローチかもしれません。

https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint

于 2013-03-21T21:15:10.820 に答える
0

pageX と pageY は、ターゲットではなく、イベント変数自体にあります。しかし、それらは mousedown イベントによって上書きされます。このためにイベントを作成する必要はありません。クロージャーは問題なく機能します。

function hotspot (a, b) {
    var x = a[0] || 0;
    var y = a[1] || 0;
    var w = b[0] || 0;
    var h = b[1] || 0;
    function between (x2, y2) {
        return x2 >= x &&
            y2 >= y &&
            x2 <= (x + w) &&
            y2 <= (y + h);
    }
    return function (e) {
        console.log("mouse x y:", e.pageX, e.pageY);
        console.log("target x y w h:", x, y, w, h);
        console.log(between(e.pageX, e.pageY));
    }
}
$(document).on('mousedown', hotspot([0,0], [300,300]));

http://jsfiddle.net/gpaMz/1/

編集:あなたの質問を読み直して、あなたが何を達成しようとしているのかわかりません。

于 2013-03-21T21:33:01.270 に答える