HTML:
<div class="views-row views-row-10 views-row-even views-row-last">
<div class="sonuc">
<span>text1</span>
</div>
</div>
<div class="views-row views-row-11 views-row-even views-row-last">
<div class="sonuc">
<span>text2</span>
</div>
JS:
if ($(".sonuc").has(":contains('text1')").length) {
$('.sonuc').parent().addClass('hobi')
}
它的工作但添加hobi
类所有父div。但我想只添加text1的父div。我该如何解决?
答案 0 :(得分:17)
您可以使用:contains
选择器以及所需的div选择器:
$('.views-row:contains(text1)').addClass('hobi');
<强> Working Fiddle 强>
答案 1 :(得分:15)
jquery selector :contains()匹配包含该字符串的任何元素。我建议使用.filter():
$(".sonuc span").filter(function() {
return this.innerText === "text1";
}).parents("div.views-row").addClass("active");
.active {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="views-row views-row-10 views-row-even views-row-last">
<div class="sonuc">
<span>text1</span>
</div>
</div>
<div class="views-row views-row-11 views-row-even views-row-last">
<div class="sonuc">
<span>text2</span>
</div>
<div class="views-row views-row-11 views-row-even views-row-last">
<div class="sonuc">
<span>text11</span>
</div>
答案 2 :(得分:10)
尝试使用不带if
语句的代码,在此上下文中完全没有必要。
$(".sonuc").has("span:contains('text1')").parent().addClass('hobi')
答案 3 :(得分:4)
您可以在一个过滤器中找到正确的元素:
$(".sonuc:contains('text1')").parent().addClass('hobi');
或者如果你的意思是第一个父母,那么只需使用:eq()
:
$(".sonuc:eq(0)").parent().addClass('hobi');
答案 4 :(得分:1)
您正在尝试查找sonuc
的父级,但仅将课程添加到sonuc
if ($(".sonuc").has(":contains('text1')").length) {
$('.sonuc').addClass('hobi')
}
答案 5 :(得分:1)
只需在jquery中添加first()
即可
if ($(".sonuc").has(":contains('text1')").length) {
$('.sonuc').first().parent().addClass('hobi')
}
.hobi{
color:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="views-row views-row-10 views-row-even views-row-last">
<div class="sonuc">
<span>text1</span>
</div>
</div>
<div class="views-row views-row-11 views-row-even views-row-last">
<div class="sonuc">
<span>text2</span>
</div>
答案 6 :(得分:1)
结合你已经拥有的东西。
$('.sonuc').has(":contains('text1')").parent().addClass('hobi');
也许测试文本不是一个好主意,它可能会改变......
获取一组元素的第一个元素:
$('.sonuc').eq(0).parent().addClass('hobi');
或
$('.sonuc:eq(0)').parent().addClass('hobi');
答案 7 :(得分:0)
更简单直接的方式,不使用:contains
,.filter()
是
$('.sonuc > span:first').parent().addClass('hobi');
它选择.sonuc
类下的第一个直接后代范围,然后使用.parent()
选择父级,并在其中添加“.hobi”类。
<强> Working JSFiddle Demo 强>
$('.sonuc > span:first').parent().addClass('hobi');
.hobi {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="views-row views-row-10 views-row-even views-row-last">
<div class="sonuc"> <span>text1</span>
</div>
</div>
<div class="views-row views-row-11 views-row-even views-row-last">
<div class="sonuc"> <span>text2</span>
</div>
</div>