我无法弄清楚如何使用jQuery根据元素的内容向元素添加CSS类。
$("td").filter(function() {
$(this).text() === "pear";
}).addClass("warning");
:contains()
我不想使用{{1}}选择器,因为我想匹配确切的文字。知道为什么这不起作用吗?我创建了一个jsfiddle:https://jsfiddle.net/bzLbu73a/
答案 0 :(得分:3)
来自.filter()
的jQuery文档:
对于每个元素,如果函数返回true(或者" truthy"值),则元素将包含在过滤集中;否则,它将被排除在外。
所有元素都被排除在外,因为您没有返回任何内容。因此,您需要返回布尔值,以便元素将包含在过滤集中。
$("#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');
});