2016-10-17 43 views
1

這可能是一種非常簡單的方法,但我一直無法弄清楚。訪問當前div外部的div內的元素

我的方法是獲取所有<img>元素的「展開圖像」類在我當前「條目」的「img-preview」中。

這是我的html:

<div class="entry"> 
<div class="img-preview"> 
    <img> 
    <img class="expanded-image" style="display:none;"> 
</div> 

<div class="content"> 
    [..] 
    [..] 
    <span class="more-text"></span> 
    [..] 
    [..] 
</div> 
</div> 

這是我的工作夥伴JS:

$('.content').each(function(event) { 

    $(this).find('span.more-text').click(function(event) { 

     // TODO 

    }); 
}); 

回答

2

首先,你不需要each()可言,你可以將click()事件處理程序到單個選擇器內的所有元素。

要解決您的問題,您可以使用closest()來找到最近的單親.entry元素點擊.more-text。從那裏你可以find()所有的.expanded-image元素。試試這個:中closestprevfind

$('span.more-text').click(function(event) { 
    $(this).closest('.content').prev().find('.expanded-image'); 
    }); 
1
$('.content').each(function(event) { 
    var $content = $(this); 

    $(this).find('span.more-text').click(function(event) { 

     $content.parent().find('.expanded-image'); // there you go 

    }); 
}); 
1

用o組合可以使用closest()冒泡發現在選擇給家長。然後從那裏你可以導航到所需的元素。

$(this).closest('.entry').find('.img-preview .expanded-image'); 

此外,羅恩建議你不必循環,然後綁定點擊事件。你可以簡單地做

$('.entry .content .more-text').click(function(){ 
    $(this).closest('.entry').find('.img-preview .expanded-image'); 
}) 
1

$('.content span.more-text').click(function(event) { 
    var $imgs = $(this).closest('.entry').find('.img-preview .expanded-image'); 
    // work with $imgs here... 
});