奇数jQuery悬停行为

奇数jQuery悬停行为,jquery,Jquery,我花了一段时间阅读了关于jQuery悬停问题的各种其他帖子,并尝试了不同的方法来让我的jQuery悬停函数正常工作,但毫无效果 我想要完成的事情 我想用jQuery的hover事件隐藏/显示li元素中的div 发生了什么事 div正确隐藏/显示,但是如果鼠标从一个li元素快速移动到下一个li元素,有时隐藏mouseleave似乎无法执行。这将使应该隐藏的div可见 演示 在演示中,您将看到这种效果。当鼠标在li元素上滚动时,包含link Delete的div会出现,但是如果鼠标快速跳到下一个li

我花了一段时间阅读了关于jQuery悬停问题的各种其他帖子,并尝试了不同的方法来让我的jQuery悬停函数正常工作,但毫无效果

我想要完成的事情

我想用jQuery的hover事件隐藏/显示li元素中的div

发生了什么事

div正确隐藏/显示,但是如果鼠标从一个li元素快速移动到下一个li元素,有时隐藏mouseleave似乎无法执行。这将使应该隐藏的div可见

演示

在演示中,您将看到这种效果。当鼠标在li元素上滚动时,包含link Delete的div会出现,但是如果鼠标快速跳到下一个li元素,它并不总是消失

如果需要任何额外的信息,请告诉我。谢谢

function updateIn(e) {
    $(this).find('.actions').show();  
    $(this).siblings().find('.actions').hide();  
}

function updateOut(e) {
    $(this).find('.actions').hide();  
}

$('li.update').hover(updateIn, updateOut);
$('li.update .actions').hide();
​在每次更新之前,您应该隐藏显示的其他操作


​在每次更新之前,您应该隐藏显示的其他操作。

我在两个函数中添加了console.log$e.target。有时似乎e.target是li元素中的一个div。这可能是因为捕获了传播的悬停事件

通过将$e.target更改为$this,您应该可以

function updateIn(e) {
    $(this).find('.actions').show();                
    console.log($(e.target));
}

function updateOut(e) {
    $(this).find('.actions').hide();  
    console.log($(e.target));
}

$('li.update').hover(updateIn, updateOut);
$('li.update .actions').hide();

我在两个函数中添加了console.log$e.target。有时似乎e.target是li元素中的一个div。这可能是因为捕获了传播的悬停事件

通过将$e.target更改为$this,您应该可以

function updateIn(e) {
    $(this).find('.actions').show();                
    console.log($(e.target));
}

function updateOut(e) {
    $(this).find('.actions').hide();  
    console.log($(e.target));
}

$('li.update').hover(updateIn, updateOut);
$('li.update .actions').hide();

事件发生在不同的元素中。查找函数不仅返回。更新类对象。更新事件发生在不同的元素中。查找函数不仅返回。更新类对象。更新

+1优秀的问题阐述+1优秀的问题阐述除了使用e.target不象约根所说的那样明智之外,你的建议——尽管这是一个安全的赌注——也不是很有效。@TJ。我一定是在约根回答时写了这个回复,因为我错过了他的回答。我意识到这不是最有效的方法,但我坚持认为,只要没有那么多兄弟姐妹,这是一个非常安全的赌注,可能会超过用户系统的轻微开销。此外,使用e.target并不像约根所说的那样明智,你的建议——尽管这是一个安全的赌注——不是很有效率。@TJ。我一定是在约根回答时写了这个回复,因为我错过了他的回答。我意识到这不是最有效的方法,但我坚持认为,只要没有那么多兄弟姐妹,这是一个非常安全的赌注,可能会超过用户系统上的轻微开销。