jQuery-通过内部文本查找标签

jQuery-通过内部文本查找标签,jquery,dom,jquery-selectors,Jquery,Dom,Jquery Selectors,我想知道是否有可能通过标签的内部文本找到标签(或者任何元素)。例如: <label for="myCheckbox">SuperSweetCheckbox</label> SuperSweetCheckbox 我想通过文本SuperSweetCheckbox找到它 我知道这似乎有点违反直觉,但由于我正在开发的应用程序的性质,这似乎是必要的。我意识到我可以遍历每一个标签,但如果可能的话,我宁愿避免这个选项 如果有人能提供帮助,我将不胜感激。使用选择器 var elem

我想知道是否有可能通过标签的内部文本找到标签(或者任何元素)。例如:

<label for="myCheckbox">SuperSweetCheckbox</label>
SuperSweetCheckbox
我想通过文本
SuperSweetCheckbox
找到它

我知道这似乎有点违反直觉,但由于我正在开发的应用程序的性质,这似乎是必要的。我意识到我可以遍历每一个标签,但如果可能的话,我宁愿避免这个选项

如果有人能提供帮助,我将不胜感激。

使用选择器

 var element = $("label:contains('SuperSweetCheckbox')");

匹配的文本可以直接出现在所选元素中、该元素的任何子元素中,或其组合中。与属性值选择器一样,
:contains()
的括号内的文本可以写为裸字或用引号括起来。文本必须有匹配的大小写才能被选择。

我认为
:contains()
选择器就是您要寻找的。在这里检查样本>

也许

$('label[value|="SuperSweetCheckbox"]')
根据:


以上所有规定都是排他性的,但也请尝试一下,如果不起作用,请告诉我

VAR $YesitHas=$("lable").innerText("SuperSweetCheckBox");

这是建立在Caspar的答案之上的,但太大了,无法发表评论

我认为这对其他人可能有用

我使用了Caspar的解决方案,但发现任何字符串中都存在空字符串
,请参阅:

在我的情况下,
SuperSweetCheckbox
是一个动态值,有时是一个空字符串,在这种情况下,我不希望出现任何匹配逻辑

使用
match()
创建伪函数似乎可行,请参阅:

您也可以使用
过滤器()
,请参阅:

)

下面是三个变体的示例-
:contains()
filter()
和一个自定义函数:

jsFiddle

jQuery

var myString = "Test";

//var myString = "";

// 01.  :contains() - matches empty string as well
$("ul li > label:contains(" + myString + ")").closest("li").addClass("matched").siblings("li").addClass("notmatched");

// 02.  filter()
$("ul li > label").filter(function() {
    return $(this).text() === myString;
}).closest("li").addClass("matched").siblings("li").addClass("notmatched");

// 03.  custom function
$.expr[':'].textEquals = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().match("^" + arg + "$");
    };
});

$("ul li > label:textEquals(" + myString + ")").closest("li").addClass("matched").siblings("li").addClass("notmatched");
HTML

<ul>
<li>
<label>Test</label>
</li>
<li>Oh Nu</li>
</ul>

第一个不行。
label
元素没有属性
value
@Felix,但它是DOM中元素的值。它不是。如果我检查元素,则没有
属性。但要说服自己:
value
是一个定义良好的属性。元素的内部文本不是这些元素的值。不幸的是,此选择器选择的文本可以是您要查找的实际值的子字符串。您要查找的示例值:test,标签中的值:这是一个测试。这意味着它将选择您不需要的值。不幸的是,我还没有找到解决办法。
<ul>
<li>
<label>Test</label>
</li>
<li>Oh Nu</li>
</ul>
.matched {
background: yellow
}

.notmatched {
background: aqua;
}