在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
,那我该怎么做?
答案 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 :(得分: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)
你的代码不起作用的原因是因为
您的选择器中找到了多个td
$("#bow-me tr td")
您不能将$(this)
用作if条件语句中的选择器。它没有有效的参考。
解决方案:您可以通过each()
函数循环访问匹配的元素,然后设置条件以检查找到的每个元素 - $(this)
在这种情况下可以使用
$("#bow-me tr td").each(function() {
if(! $(this).hasClass("show-me")) {
$(this).addClass("know-me");
}
});
我给出了这个答案作为解释为什么你的方法不起作用的解释。
我更喜欢Anton使用:not()
伪选择器的方法。