4

使用 jQuery/Javascript,我如何检查MouseLeave事件发生后鼠标悬停的第一个元素是什么?

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

我正在尝试使用event.relatedTarget.

有什么帮助吗?

4

4 回答 4

3

relatedTarget鼠标事件存在一个属性

MouseEvent.relatedTarget只读属性是鼠标事件的次要目标,如果有的话

mouseleave它指向输入的元素。

所以你可以做

$('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/

于 2012-04-28T18:27:37.447 回答
0

使用 jQuery,您可以这样做:

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

这是一个工作示例。您可以将鼠标悬停在文本“Hello”上,鼠标移出时,它会告诉您它要离开哪个元素。 http://jsfiddle.net/k7Gfv/

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

于 2012-04-28T18:10:06.913 回答
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);
}

​</p>

小提琴

于 2012-04-28T18:21:08.357 回答
0

你可以做这样的事情。这是一个小提琴

var hovered = false;;
$('div').mouseleave(function(e) {
    hovered = true;
});
$('div').hover(function(ev) {
        if (hovered) {
            alert(ev.target);
            hovered = false;
        }
});
​
于 2012-04-28T18:21:57.187 回答