通過其內容的完全匹配選擇元素好吧,我想知道是否有辦法讓:contains()jQuery的選擇器選擇只有輸入字符串的元素例如 -<p>hello</p><p>hello world</p>$('p:contains("hello")').css('font-weight', 'bold');選擇器將選擇兩個p元素并使它們變為粗體,但我希望它只選擇第一個元素。
3 回答

holdtom
TA貢獻1805條經驗 獲得超10個贊
嘗試添加一個extend偽函數:
$.expr[':'].textEquals = $.expr.createPseudo(function(arg) { return function( elem ) { return $(elem).text().match("^" + arg + "$"); };});
然后你可以這樣做:
$('p:textEquals("Hello World")');

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
所以Amandu的回答大多有效。然而,在野外使用它時,我遇到了一些問題,那些我希望找到的東西都沒有找到。這是因為有時元素的文本周圍會有隨機的空白區域。我相信,如果你正在尋找“Hello World”,你仍然希望它能夠匹配“Hello World”,甚至是“Hello World \ n”。因此,我剛剛將“trim()”方法添加到函數中,該函數刪除了周圍的空白,并且它開始更好地工作。
特別...
$.expr[':'].textEquals = function(el, i, m) { var searchText = m[3]; var match = $(el).text().trim().match("^" + searchText + "$") return match && match.length > 0;}
次要注釋... trim
僅刪除搜索文本之前和之后的空格。它不會刪除單詞中間的空格。我相信這是理想的行為,但如果你愿意,你可以改變它。
- 3 回答
- 0 關注
- 509 瀏覽
添加回答
舉報
0/150
提交
取消