我正在尝试创建一个带有jquery的菜单,就像当用户将鼠标悬停在菜单显示的元素上时一样,当用户将鼠标移开时会隐藏
我的HTML代码:
<div class="span8 img">
<img src="http://farm4.staticflickr.com/3198/2978120072_ca00381e08.jpg" alt="" width="550px" height="368px">
<div class="like-box">Like</div>
</div>
CSS:
.like-box {
display: block;
background: rgba(255, 255, 255, .9);
padding: 15px;
position: absolute;
left: -1px;
width: 94%;
bottom: -1px;
display: none;
}
使用Javascript:
$('.img').mouseover(function() {
$(this).parent().siblings('.like-box').css('display', 'block');
$(this).parent().siblings('.like-box').mouseleave(function() {
$(this).css('display', 'none');
})
});
但这似乎不起作用
答案 0 :(得分:2)
将mouseleave
事件绑定到img
鼠标悬停之外,因为鼠标悬停中的绑定事件,每次都将鼠标事件绑定到like-box
,这是不好的和不必要的。
$('.like-box').mouseleave(function() {
$(this).css('display', 'none');
})
$('img').mouseover(function() {
$(this) // this point to img
.next('.like-box') // point to like-box
.css('display', 'block');
});
<强> DEMO 强>
注意:
$('.img')
应为$('img')
,因为您的图片没有名为img
的类,.
选择器用于访问类。阅读 selectors 以及class-selector 答案 1 :(得分:1)
你的问题在这里:
$(this).parent().siblings('.like-box')
$(this)
为img
,parent()
为div.span8.img
,siblings()
为......无。
尝试:
$(this).next('.like-box')