如果其中一个子元素包含单词“Sponsored”,我需要向父div添加一个类。
<div id="post-item">
<span class="tags">
<a href="#">Blogs</a>
</span>
</div>
<div id="post-item">
<span class="tags">
<a href="#">Sponsored by Lorem Ipsum</a>
</span>
</div>
我目前正在尝试使用parent()。addClass但由于某种原因它不能正常工作。你可以在这个小提琴中看到一个例子:http://jsfiddle.net/VrPdF/
if (jQuery('a:contains("Sponsored")').length) {
jQuery(this).parent('#post-item').addClass('sponz');
}
非常感谢任何和所有帮助 - 谢谢!
答案 0 :(得分:15)
ID必须是唯一的,因此请使用class来标识父级。您可以使用 .closest()来标识类post-item
的父级。
<强> HTML 强>
<div class="post-item">
<span class="tags">
<a href="#">Blogs</a>
<h3>Lorem</h3>
</span>
</div>
<div class="post-item">
<span class="tags">
<a href="#">Sponsored by Lorem Ipsum</a>
</span>
<h3>Lorem</h3>
</div>
<强> 的JavaScript 强>
jQuery('a:contains("Sponsored")').closest('.post-item').addClass('sponz');
:has()
Selector也可以使用
选择包含至少一个与指定选择器匹配的元素的元素。
jQuery('.post-item:has(a:contains("Sponsored"))').addClass('sponz');
答案 1 :(得分:5)
您不必检查长度,它要么返回一个元素,要么不返回,并且您必须使用closest()
,因为#post-item
不是直接的父元素。
我使用了类,因为你不能使用重复的ID
$('a:contains("Sponsored")').closest('.post-item').addClass('sponz');
答案 2 :(得分:1)
以下应该是您的javascript。
$(document).ready(function () {
jQuery('a:contains("Sponsored")').closest('#post-item').addClass('sponz');
});