为了账号安全,请及时绑定邮箱和手机立即绑定

通过其内容的完全匹配选择元素

通过其内容的完全匹配选择元素

月关宝盒 2019-07-27 09:12:39
通过其内容的完全匹配选择元素好吧,我想知道是否有办法让: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")');


查看完整回答
反对 回复 2019-07-27
?
慕斯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仅删除搜索文本之前和之后的空格。它不会删除单词中间的空格。我相信这是理想的行为,但如果你愿意,你可以改变它。


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信