...
<tr>
<td>222</td>
</tr>
<tr>
<td>333 222</td>
</tr>
...
我有这个代码选择器:
$("#TableName tr td:contains('222')");
问题:我需要选择html为'222'的单元格
我尝试使用$("#TableName td tr[html=222]")
但不起作用。
答案 0 :(得分:5)
您可以use .filter()
instead进行完全匹配。
var result = $("#TableName tr td").filter(function() {
return $.text([this]) === "222";
});
这使用$.text()
来比较<td>
与"222"
的文字值。这只是做$(this).text()
的一种更快捷的方式。给你相同的结果。 (请注意,您需要在数组this
中传递[this]
。)
当匹配时,元素将返回到生成的jQuery对象中。
如果<td>
中有空格或尾随空格的可能性,您可以修剪with $.trim()
。
return $.trim( $.text([this]) ) === "222";
编辑:如果您愿意,可以创建自己的选择器来完成相同的任务:
$.extend($.expr[':'], {
textIs: function(elem, i, attr) {
return ($.trim( $.text([elem]) ) === attr[3]);
}
});
var result = $("#TableName tr td:textIs(222)")
答案 1 :(得分:0)
我发现了这种选择器的实现(在http://api.jquery.com/contains-selector/中的注释中)
$.expr[":"].econtains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase();
}
示例:
$("div:econtains('john')").css({ color: "#F00" });