通过其内容的完全匹配选择元素好吧,我想知道是否有办法让: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 关注
- 473 浏览
添加回答
举报
0/150
提交
取消