【问题标题】:Sizzle text equals嘶嘶声文本等于
【发布时间】:2026-02-08 11:15:01
【问题描述】:

使用 Sizzle 选择器引擎,是否可以找到带有 exact 文本的按钮?

例如,button:contains('Remove Document') 将匹配任何具有“删除文档”文本的按钮,但我需要它匹配显示“不删除文档”的按钮。是否有一个选择器可以匹配整个文本,从头到尾?

【问题讨论】:

    标签: sizzle


    【解决方案1】:

    你需要在那里使用filter

    $("button").filter(function(){
        return $(this).text().trim()==='Remove Document';
    });
    

    如果你真的想把它放在一个嘶嘶的选择器字符串中,从 adeneo 的答案开始并完成它,你可以使用

    button:contains("Remove Document"):not(:contains("Don"))
    

    【讨论】:

    • 对不起,我只是把 jQuery 标签放在那里,以防人们不熟悉 Sizzle。我没有使用 jQuery。我需要一个选择器字符串。
    • 在此处使用单个选择器字符串是可行的(请参阅 adeneo 的回答),但您可能没有使用正确的工具,这将毫无用处。
    • 该死的,我想说你可以把这个功能化为更普遍的用途。 jsfiddle.net/j08691/g3L3d
    【解决方案2】:

    您可以将:contains 放在:not 中以不匹配:

    $("button:not(:contains(Don't Remove Document))")
    

    FIDDLE

    【讨论】:

    • 是的,但这意味着如果有许多按钮包含但不限于所需的文本,那么这意味着提倡一种极其复杂的解决方案。
    • @DavidThomas:我们总是可以这样做 button:contains(Remove Document):not(:contains(Don't)) jsfiddle.net/mnbayazit/8guAm/1 这适用于我的场景,但它不像 button[@text='Remove Document'] 那样漂亮