我想向具有相同类的多个div元素添加一个类,但不想为所有元素添加相同的类。(所有div元素都是用jquery创建的,而不是在html中手动创建的,所以我不知道div中的值是"Yes"还是"No",它是"random"(实例html:
<div class = "flag"> Yes </div>
<div class = "flag"> No </div>
<div class = "flag"> Yes </div>
<div class = "flag"> Yes </div>
<div class = "flag"> No </div>
css:
.yes{
color : green;
}
.no{
color : red;
}
我想为带有"yes"的div应用.eyes,为带有"no"的div使用.no。我试过了,但不起作用,或者它适用。是的,适用于所有div:
$(".flag").each(function(){
if($(".flag").text() == "yes"){
$(".flag").addClass("yes");
}else{
$(".flag").addClass("no");
}
});
这里有几个问题。
- 在添加类时选择每个
.flag
元素,而不是循环迭代中的元素。使用this
关键字可以解决此问题 - 内容是
Yes
,而不是yes
,JS区分大小写 - 该内容还包含空白,在进行比较之前需要删除这些空白。您可以使用
trim()
$(".flag").each(function() {
if ($(this).text().trim() == "Yes") {
$(this).addClass("yes");
} else {
$(this).addClass("no");
}
});
.yes { color: green; }
.no { color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="flag"> Yes </div>
<div class="flag"> No </div>
<div class="flag"> Yes </div>
<div class="flag"> Yes </div>
<div class="flag"> No </div>
然而,通过使用隐式循环,通过向addClass()
提供函数和三元表达式,可以更简单地实现这一点
$(".flag").addClass(function() {
return $(this).text().trim() == "Yes" ? 'yes' : 'no';
});
.yes { color: green; }
.no { color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="flag"> Yes </div>
<div class="flag"> No </div>
<div class="flag"> Yes </div>
<div class="flag"> Yes </div>
<div class="flag"> No </div>