尝试使用jquery创建菜单,但我的代码不起作用

时间:2012-05-30 06:11:07

标签: javascript jquery javascript-events jquery-selectors

我正在尝试创建一个带有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');
        })
    });

但这似乎不起作用

2 个答案:

答案 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)imgparent()div.span8.imgsiblings()为......无。

尝试:

$(this).next('.like-box')