获取MouseLeave事件后鼠标悬停的第一个元素

时间:2012-04-28 18:02:29

标签: javascript dom javascript-events jquery

使用jquery / javascript的人如何检查MouseLeave事件后鼠标悬停的第一个元素?

基本上,我想从一组元素中检查鼠标是否在这些元素上滚动。

我正在尝试使用event.relatedTarget。 有什么帮助吗?

4 个答案:

答案 0 :(得分:2)

你可以做到

$('element').mouseleave(function(event){
    // assuming that allowedList holds the array of allowed elements
    if ( allowedList.indexOf( event.relatedTarget ) > -1 ){
        // found
    } else {
        // not found
    }
});

演示http://jsfiddle.net/gaby/V4pJb/

答案 1 :(得分:0)

使用jQuery,您可以这样做:

​$("#foo").mouse​​​leave(function(e) {
    var element = $(e.target);
})​;​

这是一个有效的例子。您可以将鼠标悬停在文本“Hello”上,在mouseout上,它会告诉您它将离开哪个元素。 http://jsfiddle.net/k7Gfv/

如果mouseenter(或悬停)与mouseleave不同,那么您需要使用变量跟踪它。在mouseenter(或悬停)上,设置一个将存储该元素的变量。在mouseleave上,您可以引用该变量(只需记住在下次触发mouseenter时清除或重置该值)。

答案 2 :(得分:0)

不确定你在寻找什么,但也许是这样的:

var elements = $("#a1, #a2");

$("#a3").on('mouseleave', nextElm);

function nextElm() {
    $('div').on('mouseenter', thisIsIt);
    $("#r").html('Now hover another element ?');   
}

function thisIsIt(e) {
    if ($.inArray(e.target, elements)!=-1){
        $("#r").html('yes');
    }else{
        $("#r").html('no');            
    }
    $("#a3").off('mouseleave', nextElm);
    $('div').off('mouseenter', thisIsIt);
}

FIDDLE

答案 3 :(得分:0)

你可以这样做。 Here's a fiddle

var hovered = false;;
$('div').mouseleave(function(e) {
    hovered = true;
});
$('div').hover(function(ev) {
        if (hovered) {
            alert(ev.target);
            hovered = false;
        }
});
​