是否可以将$(this)与非子元素组合?

时间:2012-09-27 16:43:47

标签: jquery hide this show-hide

我有一个同级的<divs>列表。每个<li>内都有两个<divs>。当用户将鼠标悬停在另一个<div>上时,我想隐藏一个<div>

我遇到的问题是,当我使用以下代码时,当我将鼠标悬停在具有“.div_1”类的任何<div>上时,隐藏了每个<div>类“.div_2”。

我想要它只有当用户将鼠标悬停在特定<div>

中的“.div_1”类时,才会隐藏具有“.div_2”类的<li>

我无法更改标记或类,并且想知道如何实现这一目标。我可以将$(this)与“.div_2”结合使用吗?

<li>
<div class="div_1"></div>
<div class="div_2"></div>
</li>    
<li>
<div class="div_1"></div>
<div class="div_2"></div>
</li> 
... 

$(document).ready(function(){
    // MEDIA GALLERY HOVER //

        $(".div_1").hover(
          function () { $(".div_2").hide(); },
          function () { $(".div_2").show(); }
        );

})

4 个答案:

答案 0 :(得分:1)

$(document).ready(function(){
    // MEDIA GALLERY HOVER //

        $(".div_1").hover(
          function () { $(this).siblings(".div_2").hide(); },
          function () { $(this).siblings(".div_2").show(); }
        );

})

或者让您缩短代码 - DEMO

$(document).ready(function(){
    $(".div_1").on("mouseover mouseout", function() {
        $(this).siblings(".div_2").toggle();
    });
});

答案 1 :(得分:0)

您可以使用next方法,该方法选择元素的下一个兄弟或siblings方法。

$(".div_1").hover(
    function () { $(this).next().hide(); },
    function () { $(this).next().show(); }
);

答案 2 :(得分:0)

$('.div1').on('mouseover',function() { $(this).siblings('.div2').css('display','none'); });

答案 3 :(得分:0)

    $(".div_1").hover(
      function () { $(this).siblings(".div_2").hide(); },
      function () { $(this).siblings(".div_2").show(); }
    );