2010-09-27 78 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" });