2017-05-18 54 views
1

我想用JQuery做一件简单的事情,但我很努力去理解我应该做什么。

我希望做的是当.overlay-detail悬停$(this).closest('p img:first-child').css('display', 'none')其他('display', 'block')

(见HTML理解)

<div id="block-views-quipe-block"> 

<div class="field-content"> 
    <p> 
    <img alt="" src="/sites/default/files/_CA17330lr.jpg"> 
    <img alt="" src="/sites/default/files/_CA17322lr.jpg"> 
    </p> 

    <div class="overlay-detail"> 
    <p>John Doe 1</p> 
    <p>job 1</p> 
    </div> 
</div> 

<div class="field-content"> 
    <p> 
    <img alt="" src="/sites/default/files/_CA17330lr.jpg"> 
    <img alt="" src="/sites/default/files/_CA17322lr.jpg"> 
    </p> 

    <div class="overlay-detail"> 
    <p>John Doe 2</p> 
    <p>job 2</p> 
    </div> 
</div> 

... 

</div> 

这是我想这样做:

$("#block-views-quipe-block .overlay-detail").hover(function(){ 
    $(this).closest('p img:first-child').css("display", "none"); 
}, function(){ 
    $(this).closest('p img:nth-child(2)').css("display", "block"); 
}); 

我究竟做错了什么 ?

+0

最接近()只搜索祖先和不断上升,直到找到一个匹配,因此而尝试使用父()找到()在这里。 –

回答

5

问题是因为closest()寻找父元素,而p是兄弟姐妹。使用prev(),而不是拿到p,然后find()让孩子img

$("#block-views-quipe-block .overlay-detail").hover(function(){ 
    $(this).prev('p').find('img:first-child').hide(); 
}, function(){ 
    $(this).prev('p').find('img:nth-child(2)').show(); 
}); 
相关问题