2017-05-18 56 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(); 
}); 
相關問題