我正在尝试匹配div的h4(使用jQuery),以便我可以删除它的上边距。但是,我只想匹配h4,如果它上面没有文字。例如,匹配此:
<div>
<h4>Header</h4>
...
</div>
但不是这样:
<div>
Blah blah blah.
<h4>Header</h4>
...
</div>
我在jQuery中提出的最佳代码是:
$("div h4:first-child")
但不幸的是,这与上述情况相符。反正有没有指定你希望它是绝对的第一个元素,之前没有文本节点?
答案 0 :(得分:3)
<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
}
});
答案 1 :(得分:3)
$("div h4")
.filter(function() {
var prev = this.previousSibling;
return (!prev
|| prev.nodeType !== 3
|| (prev.nodeType == 3 && prev.nodeValue.match(/^\s*$/)));
})
编辑:修正了它。适用于Firefox,IE8
注意:
Node.TEXT_NODE
在IE中不可用。因此使用幻数3。