2016-10-17 11 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

まずあなたがすべてであなたがclick()イベントハンドラを適用することができますようeach()を必要としません単一のセレクタ内のすべての要素に渡します。

問題を解決するには、closest()を使用して、クリックした.more-textに最も近い親.entry要素を見つけることができます。そこから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

使用0の組み合わせをあなたは、セレクタで指定された親を見つけるまでバブルにclosest()を使用することができます。そこから、必要な要素までナビゲートすることができます。

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

また、Ronは、クリックイベントをループしてバインドしないでください。あなたは簡単に行うことができます

$('.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... 
}); 
関連する問題