jquery悬停在项目卡在无限循环/开始闪烁项目

时间:2013-02-22 00:42:24

标签: javascript jquery html css

请参阅下面的代码。我想要的只是:

  • 我的所有物品绝对定位
  • 当我将鼠标悬停在item1上时,我希望item2,item3显示
  • 当我将鼠标悬停在item2上时,我希望item3隐藏
  • 当我点击item2时,我会在item3仍然隐藏时执行某些功能

使用下面的代码,如果我将鼠标悬停在item2上,它会开始闪烁item2和item3。

我做错了什么?

的jsfiddle:

http://jsfiddle.net/z9Unk/53/

HTML

<div class="item1">
  item1
</div>
<div class="item2">
    item2
</div>
<div class="item3">
    item3
</div>

CSS:

item1 {
    position:absolute;
    width:150px;
    height:150px;
    background-color:red;
    top:5%;
}

.item3, .item2 {
    position:absolute;
    width:50px;
    height:50px;
    background-color:green;
    top:8%;
    left:1%;
    display:none;
}

.item3 {
    top:18%;
}

JS:

var item1 = $(".item1");
var item2 = $(".item2");
var item3 = $(".item3");

item1.hover(
    function() {
      item2.show();
      item3.show();
    },
    function() {
      item2.hide();
      item3.hide();
    }

);

item2.hover(
    function() {
      item3.hide();
    },
    function() {
    }

);

item2.click(
    function() {
        alert("Perform some function");
    }
);

4 个答案:

答案 0 :(得分:2)

<div class="item1">
  item1
    <div class="item2">
        item2
    </div>
    <div class="item3">
        item3
    </div>
</div>

你应该重新构建你的HTML

item2超出item1所以当你移动item2时,item1的mouseleave将触发,然后触发item1的mouseenter

答案 1 :(得分:0)

您需要使用事件监听器,否则您的代码只是自上而下运行。

答案 2 :(得分:0)

如果您不想重构HTML,可以在item3上编写另一个onhover函数

item3.hover(
function() {
     item2.show();
  item3.show();
},
function() {
}

);

http://jsfiddle.net/z9Unk/55/

干杯

答案 3 :(得分:-1)

增加item1的z-index,或者只将item2 + 3移动到其他任何地方