2017-11-01 4 views
1

jQueryを使用して、前のh1要素を選択して.show_moreに追加しようとしています。私はprev()closest()を使ってみましたが、いずれもうまくいかないようです。親のためのjQueryは前の要素を選択します(子要素ではない兄弟)

$(document).ready(function() { 
 
    $('.show_more').closest('h1').addClass('gummybear'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<h1>Test</h1> 
 
<p>I am a paragraph</p> 
 
<div class="show_more">Show More</div>

+0

element.parent()。find()を使用すると、コードに示されているレベルと同じレベルにある場合にこの問題を解決できます。 –

答えて

1

closest()検索し、そう適用されません。 p.show_moreh1の間にあるので、prev()自体は機能しません。

代わりに、あなたはこのように、prevAll('h1').first()を使用することができます。

$(document).ready(function() { 
 
    $('.show_more').prevAll('h1').first().addClass('gummybear'); 
 
});
.gummybear { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h1>Test</h1> 
 
<p>I am a paragraph</p> 
 
<div class="show_more">Show More</div>

first()を省略することができますが、すべての兄弟h1の要素に影響を与えること気にしない場合、または場合にのみ、これまで存在しますそれらの1つ(技術的にSEOの理由のためにあるはずです)。

関連する問題