【发布时间】:2014-01-28 11:00:15
【问题描述】:
这是 HTML 代码:
<div class="item">item 01</div>
<div class="item">item 02</div>
<div class="item">item 03</div>
....
<div class="list">
<ul>
<li>store 1</li>
<li>store 2</li>
<li>store 3</li>
</ul>
</div>
现在它是如何工作的:
当我将鼠标悬停在“item 0X”上时,“List”应该会显示在“item 0X”按钮旁边,这很好用。
问题是当我再次从列表返回到按钮时如何使列表保持可见。
我尝试使用此代码,但它不起作用
$(document).on({
mouseenter: function () {
var div = $(this);
if( $('.list').css('display') == "none" )
{
actionHover(div);
}
},
mouseleave: function () {
setTimeout( function(){
if( $(".list").is(':hover') )
{
}
else if( $(".item").is(':hover') )
{
}
else
{
$('.list').hide();
}
}, 100)
}
},".list, .item");
当鼠标从列表中退出时会出错:
错误:语法错误,无法识别的表达式:不支持的伪: 悬停
【问题讨论】:
-
您多次使用 id "item"。 id 必须是唯一的!另外,根据您拥有的 jquery 版本, :hover 是错误的。只是谷歌,第一次点击:stackoverflow.com/questions/11998514/…
-
如果您只想在用户没有悬停在
.list或.item上时隐藏.list,则取出整个setTimeout部分并留下$('.list').hide();-你的 mouseleave 已经被每个触发了。 -
Goose:你的答案是正确的,但这会产生一个小问题,当我从按钮粘贴到快速列出列表隐藏时,我需要非常快速地粘贴才能从隐藏中捕获列表...有什么想法吗?!
-
这是一个下拉菜单吗?或者列表会显示在页面的其他地方吗?每当您将鼠标移出指定元素时,mouseleave 函数就会触发 - 因此您很可能需要将这些元素放在父元素中并在父元素上触发鼠标事件。
-
这是一个将物品存储在特定商店中的列表。因此,当您显示项目列表并悬停某些项目时,该列表应该会显示为悬停项目选择商店。
标签: jquery mouseleave mouseout