查找具有特定值的单元格并将类应用于同一行中的单元格

时间:2018-05-14 02:26:34

标签: javascript jquery

我有一个排名表,每个玩家都有特定的Elo评分。根据他们的Elo评级,我希望玩家的名字是基于他们的等级的特定颜色。我一直在使用以下代码:

if (parseInt($("td.data-rating").val()) > 100) {
  $(this).closest("tr").find("td.data-name").addClass("important");
}

JSFiddle 为什么这段代码不起作用?我用的是#34;这个"不正确?

2 个答案:

答案 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");
}
});