我试图通过检查当前类是否包含data-value
New
来为div添加一个类。但我不能100%确定我是否正在构建正确的方式:
if ($(".link").data("value") === 'New') {
$(this).addClass('new');
}
<div class="link" data-value="New">
<a href="">LINK</a>
</div>
基本上,如果data-value
为New
,则将new
类添加到link
不确定这是否正确。
答案 0 :(得分:3)
问题是因为if
条件没有.link
元素的范围,因此this
实际上是指window
。
要解决此问题,您需要直接选择.link
元素。试试这个:
if ($(".link").data("value") === 'New') {
$('.link').addClass('new');
}
&#13;
.new {
border: 1px solid #C00;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="link" data-value="New">
<a href="">LINK</a>
</div>
&#13;
另请注意,这仅适用于.link
类的单个实例。如果该类有多个元素,则需要单独循环遍历每个元素。您可以这样做:
$('.link').each(function() {
if ($(this).data("value") === 'New') {
$(this).addClass('new');
}
});
&#13;
.new {
background-color: #CC0;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="link" data-value="New">
<a href="">LINK</a>
</div>
<div class="link">
<a href="">LINK</a>
</div>
<div class="link" data-value="New">
<a href="">LINK</a>
</div>
&#13;