1

jQueryを使用して、現在ホバーされている要素を特定したいと思います。これはページ上の任意の要素である可能性があります。つまり、、、、mouseoverおよびは特定の要素に関連するためmouseout、ここでは適用されません。mouseentermouseleave

簡単なサンプルを次に示します。

$(window).bind('mousemove', function() {
    if (elementBeingHoveredOver.attr('id') != 'foo') {
        // ... (Do some cool stuff here) ...
        $(window).unbind('mousemove');
    }
});

mouseenterイベントハンドラーとmouseleaveイベントハンドラーを要素にバインドしてそのようにするとよいように見えます#fooが、マウスの動きが速すぎてmouseleaveイベントを登録できないことが多いので、この方法で試してみたいと思います。

決定する方法についてのアイデアはありますかelementBeingHoveredOver

4

2 に答える 2

3

これを試して

$(window).bind('mousemove', function(e) {
    if ($(e.target).attr('id') != 'foo') {
        // ... (Do some cool stuff here) ...
        $(window).unbind('mousemove');
    }
});
于 2011-12-12T20:33:52.607 に答える
2

ページ上のすべての要素のマウス移動イベントにバインドすることをお勧めしますが、マウスの位置で要素を見つける方法は次のとおりです。

ドキュメントのマウス移動イベントにバインドすると、 and を使用してカーソル位置を取得できpageXますpageY

$(document).mousemove(function(e){
    alert(e.pageX);
    alert(e.pageY);
});

次に、を使用し.offset()て、ページ上の要素の位置を取得できます。

function elementBeingHoveredOver(mouseX, mouseY) {

    $('*').each(function() {
        var x = $(this).offset().left;
        var y = $(this).offset().top;
        var width = $(this).width();
        var height = $(this).height();

        if (x <= mouseX && y <= mouseY && (x + width) >= mouseX && (y + height) >= mouseY) {
            return $(this);
        }
    });

    return null;    
}
于 2011-12-12T20:34:26.707 に答える