表上的奇怪过滤器()行为

时间:2014-11-10 07:06:21

标签: jquery

有人可以看看我的演示并告诉我为什么我的单元格没有突出显示?

$("#tbl td.rank").filter(function () {
    return $(this).text() > 30;
}).addClass('bright');

http://jsfiddle.net/qmftvxyd/6/

我基本上想要突出显示等级>的单元格。 30

更新:更改了演示链接,因为错误地提到了课程

3 个答案:

答案 0 :(得分:2)

你有一些错误:

1)你的选择器错了。您可以添加tr(可选),也不会添加类.rank

的td

2)使用parseInt比较您首先要转换为数字的td的文字。

$("#tbl tr td.age").filter(function() {
  return parseInt($(this).text(), 10) > 30;
}).addClass('bright');
.bright {
  color: red !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="tbl">
  <thead>
    <tr>
      <th class="id">EmpNo</th>
      <th class="name">First Name</th>
      <th class="rank">Rank</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="id">E342</td>
      <td class="name">Bill</td>
      <td class="age">35</td>
    </tr>
    <tr>
      <td class="id">E343</td>
      <td class="name">Laura</td>
      <td class="age">26</td>
    </tr>
  </tbody>
</table>

答案 1 :(得分:1)

我猜您只需要将检查等级转换为Integer,以便可以比较该值。 尝试将匹配的TD文字的颜色更改为其他类似红色的颜色以注意效果。 试试这个:

$("#tbl td.rank").filter(function () {
    return parseInt($(this).text()) > 30;
}).addClass('bright');

Demo

答案 2 :(得分:0)

您正在使用错误的类进行过滤。您应该使用td.age。 的 DEMO

 $("#tbl td.rank").filter(function () {
     return parseInt($(this).text(),10) > 30;
  }).addClass('bright');