有人能告诉我是否有可能根据其内容而不是通过ID或类来查找元素吗?
我试图找到没有不同的类或id的元素。(然后我需要找到该元素的父元素。)
有人能告诉我是否有可能根据其内容而不是通过ID或类来查找元素吗?
我试图找到没有不同的类或id的元素。(然后我需要找到该元素的父元素。)
当前回答
伙计们,我知道这很老了,但是我有一个解决办法,我认为它比所有方法都管用。首先克服了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()
希望不久的将来有人会发现它有帮助。
其他回答
伙计们,我知道这很老了,但是我有一个解决办法,我认为它比所有方法都管用。首先克服了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”选择器来修复这个问题。
下面的jQuery选择包含文本但没有子节点的div节点,这些div节点是DOM树的叶节点。
$ (" div:包含(“测试”):不(:有(*))). css(“背景颜色”,“红”); < div > div1 这是一个测试,嵌套在div1</div> <div>嵌套在div1<div> < / div > < div > div2测试 这是另一个测试,嵌套在div2</div> <div>嵌套在div2中</div> < / div > < div > div3 < / div > < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js " > < /脚本>
在我看来是最好的办法。
$.fn.findByContentText = function (text) {
return $(this).contents().filter(function () {
return $(this).text().trim() == text.trim();
});
};
是的,使用jQuery包含选择器。