filter()无法按预期工作

时间:2015-12-01 17:35:01

标签: javascript jquery

我无法弄清楚如何使用jQuery根据元素的内容向元素添加CSS类。

$("td").filter(function() {
    $(this).text() === "pear";
}).addClass("warning");
:contains()

我不想使用{{1}}选择器,因为我想匹配确切的文字。知道为什么这不起作用吗?我创建了一个jsfiddle:https://jsfiddle.net/bzLbu73a/

1 个答案:

答案 0 :(得分:3)

来自.filter()的jQuery文档:

  

对于每个元素,如果函数返回true(或者" truthy"值),则元素将包含在过滤集中;否则,它将被排除在外。

所有元素都被排除在外,因为您没有返回任何内容。因此,您需要返回布尔值,以便元素将包含在过滤集中。

Updated Example

$("#myTable td").filter(function () {
  return $(this).text() === "1";
}).addClass("warning");

没有jQuery:

Example Here - 使用.forEach()

Array.prototype.forEach.call(document.querySelectorAll('#myTable td'), function (el) {
  if (el.textContent === '1') {
    el.classList.add('warning');
  }
});

Example Here - 使用.filter()

var elements = document.querySelectorAll('#myTable td');
var filteredElements = Array.prototype.filter.call(elements, function (el) {
  return el.textContent === '1';
});

Array.prototype.forEach.call(filteredElements, function (el) {
  el.classList.add('warning');
});