jQuery通过文本查找元素

任何人都可以告诉我,如果有可能find一个基于其内容而不是一个id的元素?

我试图find没有不同类或id的元素。 (然后我需要find该元素的父项。)

您可以使用:containsselect器根据其内容获取元素。

 <div>This is a test</div> <div>Another Div</div> $('div:contains("test")').css('background-color', 'red'); 

在这里演示

在jquery文档中说:

匹配文本可以直接出现在所选元素,任何元素的后代或组合中

因此仅使用:containsselect器是不够的,您还需要检查您search的文本是否是您针对的元素的直接内容…类似于:

  function findElementByText(text){ var jSpot=$("b:contains("+text+")") .filter(function(){ return $(this).children().length === 0;}) .parent(); // because you asked the parent of that element return jSpot; } 

是的,使用jQuery containsselect器。

费拉斯,我知道这是旧的,但嘿我有这个解决scheme,我觉得比所有的工作更好。 首先,克服了jquery:contains()随附的大小写敏感性:

 var text = "text"; var search = $( "ul li label" ).filter( function () { return $( this ).text().toLowerCase().indexOf( text.toLowerCase() ) >= 0; }).first(); // Returns the first element that matches the text. You can return the last one with .last() 

希望不久的将来有人会觉得有帮助。

火箭的答案不起作用。

 <div>hhhhhh <div>This is a test</div> <div>Another Div</div> </div> 

我只是在这里修改他的DEMO ,你可以看到根DOM被选中。

 $('div:contains("test"):last').css('background-color', 'red'); 

在代码中添加“ :last ”select器来解决这个问题。

我认为最好的方法。

 $.fn.findByContentText = function (text) { return $(this).contents().filter(function () { return $(this).text().trim() == text.trim(); }); };