2017-01-06 13 views
6

私は、最初の例(divのものを使用)が2番目のもの(spanのもの)を使用してテキストを取得しなかった理由がわかりません。同じJSコードでclosest()を使用していることを達成できる:(div年代を使用して)closest()メソッドが期待どおりに動作していない

$('.class-1').closest('div').find('.class-2').text() 

まずスニペットはclosest()を使用してテキストを取得カント:

console.log($('.class-1').closest('div').find('.class-2').text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="class-1">Div 1 Content</div> 
 
    <div class="class-2">Div 2 Content</div> 
 
</div>


span年代を使用して)第スニペットclosest()を使用してテキストを取得:

console.log($('.class-1').closest('div').find('.class-2').text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <span class="class-1">Div 1 Content</span> 
 
    <br/> 
 
    <span class="class-2">Div 2 Content</span> 
 
</div>

私が返すことができる代替案parents()/parent()/siblings()/nextAll()について知っていますclass-2この場合はextですが、何が起こるのかを知りたいだけです。

+2

'closest()'には現在の要素が含まれているため、 'closest( 'div')'は同じ要素を返しています。 http://api.jquery.com/closestを参照してください。 –

答えて

12

.closest()は呼び出し元がセレクタにも適合するかどうかをチェックするため、.class-1divです。ドキュメントから

説明:セット内の各要素について、 素子自体をテストし、DOMツリー内のその祖先を通して をトラバースすることによってセレクタと一致することを第一の要素を取得します。

関連する問題