鼠标悬停问题和jquery问题

时间:2013-02-01 14:50:18

标签: javascript jquery css html5 css3

我对几个块的jquery效果有问题。 Mouseenter和mouseleave仅在第一个div块上工作,而在其他所有块上则不起作用。

这是JS:

 $(document).ready(function() {

     $('#mainbox').mouseenter(
         function () {
           $('#infobox').fadeIn();
         }); 
     $('#mainbox').mouseleave(
         function () {
           $('#infobox').fadeOut();
         });

   });

还阻止:

<div id="mainbox"><div id="infobox" style="display: none;">first block - it works on      this one</div></div>

<div id="mainbox"><div id="infobox" style="display: none;">2nd block - it doesn't work/div></div>

<div id="mainbox"><div id="infobox" style="display: none;">3rd block - it doesn't work</div></div>

你们有什么想法是什么问题吗?

2 个答案:

答案 0 :(得分:2)

问题是:该选择器仅定位文档中第一个主框内的第一个信息框。

API中,您可以阅读:

  

每个id值只能在文档中使用一次。如果超过   一个元素已分配相同的ID,使用该ID的查询   只会选择DOM中第一个匹配的元素。这种行为   但是,不应该依赖;包含多个文档的文档   使用相同ID的元素无效。

这就是你的代码无效的原因。

提示: 将id切换到类并绑定鼠标事件以在div内搜索,如:

$('.mainbox').mouseenter(
  function () {
    $(this).find('.infobox').fadeIn();
  }); 

$('.mainbox').mouseleave(
  function () {
    $(this).find('.infobox').fadeOut();
});

答案 1 :(得分:0)

将id更改为class:

<div class="mainbox"><div class="infobox" style="display: none;">first block - it works on      this one</div></div>


<div class="mainbox"><div class="infobox" style="display: none;">2nd block - it doesn't work/div></div>

<div class="mainbox"><div class="infobox" style="display: none;">3rd block - it doesn't work</div></div>

然后在JS:

$(document).ready(function() {

 $('.mainbox').mouseenter(
     function () {
       $(this).find('.infobox').fadeIn();
     }); 
 $('.mainbox').mouseleave(
     function () {
       $(this).find('.infobox').fadeOut();
     });
});