如果数据值为true,则jQuery Add Class

时间:2018-05-18 15:43:43

标签: jquery html

我试图通过检查当前类是否包含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-valueNew,则将new类添加到link

不确定这是否正确。

1 个答案:

答案 0 :(得分:3)

问题是因为if条件没有.link元素的范围,因此this实际上是指window

要解决此问题,您需要直接选择.link元素。试试这个:

&#13;
&#13;
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;
&#13;
&#13;

另请注意,这仅适用于.link类的单个实例。如果该类有多个元素,则需要单独循环遍历每个元素。您可以这样做:

&#13;
&#13;
$('.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;
&#13;
&#13;