javascript - 仅当元素前面没有文本节点时如何匹配元素的第一个子元素?

标签 javascript jquery css-selectors

我正在尝试匹配 div 的 h4(使用 jQuery),以便我可以删除它的上边距。但是,如果它上面没有文字,我只想匹配 h4 。例如,匹配这个:

<div>
  <h4>Header</h4>
  ...
</div>

但不是这个:

<div>
  Blah blah blah.
  <h4>Header</h4>
  ...
</div>

我能想到的最好的 jQuery 代码是这样的:

$("div h4:first-child")

但不幸的是,这符合上述两种情况。无论如何要指定您希望它成为绝对的第一个元素,之前没有文本节点?

最佳答案

<div>
    <h4>Header</h4>
    ...
</div>

<div>
    Blah blah blah.
    <h4>Header</h4>
    ...
</div>

然后您可以使用以下内容。

$('div').each(function() {
    var me = this;
    if ($(me).html().toUpperCase().indexOf("<H4>") == 0){ //check to see if the inner html starts with an h4 tag
        $(me).children('h4')... //do what you need to do to the header
    }
});

关于javascript - 仅当元素前面没有文本节点时如何匹配元素的第一个子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562134/

相关文章:

php - Symfony2 将另一个操作中的操作的响应返回给 JavaScript

javascript - 谷歌地图 API 的输出返回相同的结果

jquery - 搜索 Kendo UI 网格中的所有列

php - 是否可以在Elasticsearch索引上使用AJAX和PHP实现实时搜索

jquery - jqtouch/谷歌地图 API v3 问题

javascript - 如何使机器人状态显示为 "Online from Mobile"

javascript - 迭代动态创建的表并将数据插入 SQL Server 表

javascript - 如何退出超时函数的实例?

CSS :nth-of-type() and :not() selector?

html - CSS 选择器 : if div's class name contains AT LEAST one char