Omi*_*iod 2 jquery css-selectors
我需要从DOM中检索数据,但容器没有特定的class或者id,有时它们并非全部可用.
所以我能找到这个:
<h2>name</h2>
<p>john</p>
<h2>address</h2>
<p>street 1</p>
<h3>email</h3>
<p>jong@site.com</p>
Run Code Online (Sandbox Code Playgroud)
或这个:
<h2>name</h2>
<p>john</p>
<h3>email</h3>
<p>jong@site.com</p>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,获取的电子邮件,我不能选择class或id,也不由N(TH)元素,因为它可能是第二或3TH<p>
我看到的唯一的解决办法是让第一<p>刚过<h3>email</h3>,但我不知道如何来过滤text()数据.
谢谢.
使用:contains()...或完全匹配.filter()然后执行.next()以获取<p>后面的兄弟,如下所示:
$("h3:contains('email')").next().doSomething();
Run Code Online (Sandbox Code Playgroud)
或者用.filter()一个精确的匹配(其中:contains()是一个字符串匹配),就像这样:
$("h3").filter(function() { return $.text([this]) == "email"; }).next()
Run Code Online (Sandbox Code Playgroud)
您始终可以创建自己的选择器,以匹配确切的文本内容.
这样做,但首先修剪任何空格.
$.extend($.expr[':'], {
textIs: function(elem, i, attr) {
return ( $.trim( $.text([elem]) ) === attr[3] );
}
});
Run Code Online (Sandbox Code Playgroud)
然后你会像这样使用它:
示例: http ://jsfiddle.net/aXvm3/
$('h3:textIs(email)').next()
Run Code Online (Sandbox Code Playgroud)