2010-09-27 80 views
4
... 
<tr> 
    <td>222</td> 
</tr> 
<tr> 
    <td>333 222</td> 
</tr> 
... 

而且我对选择这个代码:jQuery选择帮助

$("#TableName tr td:contains('222')"); 

问题:我需要选择的HTML是“222”只有细胞。
我尝试使用$("#TableName td tr[html=222]")但不起作用。

回答

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