【问题标题】:Is there any way to select first p tag that have some text data using query selector有没有办法使用查询选择器选择具有一些文本数据的第一个 p 标签
【发布时间】:2017-04-25 17:32:53
【问题描述】:

我有一个div,它有多个p 标签。我想获取不为空的p 元素的文本。例如

<div>
 <p></p>
 <p></p>
 <p>data</p>
 <span>some</span>
</div>

我想获取第三个p 元素的数据,即data

我可以使用

document.querySelector("p:nth-child(1)");

但在上述情况下,我必须定义子编号。但是我怎样才能得到基于空条件的 p

【问题讨论】:

    标签: javascript html css-selectors


    【解决方案1】:

    假设空白不成问题,您可以将:not() pseudo-class:empty pseudo-class 结合使用:

    document.querySelector("p:not(:empty)");
    

    由于您使用的是document.querySelector(),因此可以确保仅匹配第一个此类元素。您不能用选择器(即在选择器字符串本身内)表达“第一个p:not(:empty)”。

    (当然,您可能希望选择器更具体,除非您真的对整个文档中的第一个非空 p 元素感兴趣。)

    【讨论】:

    • 但是如果p标签本身还有其他标签,那么p标签不被认为是空的..
    • @Sunil Garg:当然你没有在你的问题中提到这一点——你所做的只是显示两个空段落。好吧,那么您别无选择,只能选择所有这些并迭代,直到找到一个没有子节点的节点。
    • 好的,谢谢.. 你能回答这个stackoverflow.com/questions/43607844/…
    • @Sunil Garg:我可以相信您在其他问题中没有遗漏任何关键细节吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多