我有一个排名表,每个玩家都有特定的Elo评分。根据他们的Elo评级,我希望玩家的名字是基于他们的等级的特定颜色。我一直在使用以下代码:
if (parseInt($("td.data-rating").val()) > 100) {
$(this).closest("tr").find("td.data-name").addClass("important");
}
JSFiddle 为什么这段代码不起作用?我用的是#34;这个"不正确?
答案 0 :(得分:2)
您有几个问题:
this
关键字指的是Window
对象HTMLInputElement
有值,.val()
的使用不正确<td>
元素进行迭代,以设置classList 这应该适合你:
$(function() {
$("td.data-rating").each((i, el) => {
if (parseInt(el.textContent) > 1000) {
$(el).closest("tr").find("td.data-name").addClass("important");
}
})
})
.important {
color: red;
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<table>
<tr>
<td class="data-name">Player 1</td>
<td>1</td>
<td class="data-rating">1200</td>
</tr>
<tr>
<td class="data-name">Player 2</td>
<td>1</td>
<td class="data-rating">1150</td>
</tr>
<tr>
<td class="data-name">Player 3</td>
<td>1</td>
<td class="data-rating">1000</td>
</tr>
</table>
</html>
答案 1 :(得分:0)
$(&#34; td.data-rating&#34;)将返回数组,因此.val将无效。你应该使用每个功能。尝试下面的一个。
$("td.data-rating").each(function (index) {
if(parseInt($(this).text()) > 1100) {
$(this).siblings().eq(0).addClass("important");
}
});