Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jquery中,基于标记之间的文本的选择器_Jquery_Css Selectors - Fatal编程技术网

在Jquery中,基于标记之间的文本的选择器

在Jquery中,基于标记之间的文本的选择器,jquery,css-selectors,Jquery,Css Selectors,我需要从DOM中检索数据,但容器没有特定的类或id, 有时,它们并非全部可用 所以我可以找到这个: <h2>name</h2> <p>john</p> <h2>address</h2> <p>street 1</p> <h3>email</h3> <p>jong@site.com</p> 名称 约翰 地址 第一街 电子邮件 jong@site.com

我需要从DOM中检索数据,但容器没有特定的
id
, 有时,它们并非全部可用

所以我可以找到这个:

<h2>name</h2>
<p>john</p>
<h2>address</h2>
<p>street 1</p>
<h3>email</h3>
<p>jong@site.com</p>
名称
约翰

地址 第一街

电子邮件 jong@site.com

或者这个:

<h2>name</h2>
<p>john</p>
<h3>email</h3>
<p>jong@site.com</p>
名称
约翰

电子邮件 jong@site.com

如您所见,要获取电子邮件,我不能通过
id
,也不能通过第n(th)个元素进行选择,因为它可能是第2个或第3个

我看到的唯一解决方案是在
电子邮件
之后获得第一个
,但我不知道如何通过
文本()过滤数据

谢谢。

使用…或与精确匹配,然后执行以下操作以获得
兄弟姐妹,如下所示:

var yourP = $('h3:contains("email")').next()
$("h3:contains('email')").next().doSomething();
$("h3").filter(function() { return $.text([this]) == "email"; }).next()
或者使用进行精确匹配(其中
:contains()
是子字符串匹配),如下所示:

$("h3:contains('email')").next().doSomething();
$("h3").filter(function() { return $.text([this]) == "email"; }).next()

.

例如,要获取电子邮件,您可以执行以下操作:

var emailAddress = $('h3:contains(email)').next('p').text();

您始终可以创建自己的选择器,以匹配精确的文本内容

这一个可以做到这一点,但会先删除所有空格

$.extend($.expr[':'], {
    textIs: function(elem, i, attr) {
        return ( $.trim( $.text([elem]) ) === attr[3] );
    }
});
然后你会这样使用它:

$("h3:contains('email')").next().doSomething();
$("h3").filter(function() { return $.text([this]) == "email"; }).next()
示例:


为什么修剪?:)对于
:textIs(email)
案例来说,它不是更有用吗?@Nick-可以选择任何一种方式。您在标记内有一个换行符,突然它不起作用。我猜用户除了文本之外,还希望匹配前导和尾随空格的频率会降低。感谢(非常快速)的回复,我不知道在这种情况下我有这么多选项。在很多情况下我都需要这个选择器,所以自定义选择器将是最有用的。