jQuery选择前一个元素(兄弟,而不是孩子)

时间:2017-11-01 14:30:12

标签: jquery

我正在尝试使用jQuery选择并将之前的h1元素添加到.show_more。我尝试过使用prev()closest(),但似乎都没有工作,任何帮助都会受到赞赏。

$(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>

1 个答案:

答案 0 :(得分:1)

closest()搜索父母,因此不适用。由于prev()位于p.show_more之间,h1本身无法正常工作。

相反,您可以使用prevAll('h1').first(),如下所示:

&#13;
&#13;
$(document).ready(function() {
  $('.show_more').prevAll('h1').first().addClass('gummybear');
});
&#13;
.gummybear { color: #C00; }
&#13;
<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>
&#13;
&#13;
&#13;

如果您不介意影响所有同级first()元素,或者只有其中一个元素(因为技术上应该出于搜索引擎优化的原因),h1可以省略