将类添加到没有class-jQuery的元素

时间:2014-03-07 12:18:58

标签: javascript jquery html css

table下方只有一个td有类,另一个没有类似的类:

<table id="bow-me">
  <tr class="row-me">
    <td class="show-me">Pet is Great</td>
    <td>Pete is Greate</td>
  </tr>
</table>

我尝试过类似的事情:

if(!$("#bow-me tr td").hasClass("show-me")) {
  $(this).addClass("know-me");
}

但是这不会在我的第二个class添加td “知识”

我附上了JSFiddle here

如果我想将Class添加到第二个td,那我该怎么做?

3 个答案:

答案 0 :(得分:3)

尝试使用属性选择器和:not()来获取<td>而不使用任何类

$('#bow-me tr td:not([class])').addClass('know-me');

或者,如果您想指定哪个<td>喜欢第一个或第二个,请使用:eq()

$('#bow-me tr td:eq(1)').addClass('know-me');

文档参考

  1. :not()
  2. Attribute selectors
  3. .eq()

答案 1 :(得分:0)

您可以使用 :eq() 选择器:

$('#bow-me tr.row-me td:eq(1)').addClass('know-me');

<强> Updated Fiddle

.eq()

$('#bow-me tr.row-me td').eq(1).addClass('know-me');

<强> Updated Fiddle

答案 2 :(得分:0)

你的代码不起作用的原因是因为

  1. 您的选择器中找到了多个td

    $("#bow-me tr td")

  2. 您不能将$(this)用作if条件语句中的选择器。它没有有效的参考。

  3. 解决方案:您可以通过each()函数循环访问匹配的元素,然后设置条件以检查找到的每个元素 - $(this)在这种情况下可以使用

    $("#bow-me tr td").each(function() {
      if(! $(this).hasClass("show-me")) {
        $(this).addClass("know-me");
      }
    });
    

    查看jsFiddle here

    我给出了这个答案作为解释为什么你的方法不起作用的解释。 我更喜欢Anton使用:not()伪选择器的方法。