Javascript 根据条件替换未知命名元素的inner.html

Javascript 根据条件替换未知命名元素的inner.html,javascript,html,Javascript,Html,我经常遇到这个问题,从不知道最好的方法。假设我有一个包含以下html的多个实例的结构: <div class="known"> <div class="another unknown"> <div class="unknown"> <h4>Something a something</H4> </div> </div> </div>

我经常遇到这个问题,从不知道最好的方法。假设我有一个包含以下html的多个实例的结构:

<div class="known">
    <div class="another unknown">
        <div class="unknown">
            <h4>Something a something</H4>
        </div>
    </div>
</div>

某物
对于已知类的每个div,我只想更改该div的内部html,前提是它包含一个带有特定标记的div,在本例中为


实现这一目标的最佳方式是什么。我知道我可以通过获取已知类的内部html并进行正则表达式匹配来实现这一点。但是有没有一种基于标记的更健壮的方法呢?

简单,只需使用一个跨越
div.known
的选择器,并将其上下文限制为
div h4
。如果选择器至少选择一个元素,则
div.class
具有您期望的子元素

if( $('.known div h4').length > 0 ){
    $('.known').html('Some html');
}
对!!你可以这样做

var head = Array.prototype.slice.call(document.querySelectorAll("h4 #known"));
for(var i = 0; i < head.length; i++)
{
    while(head[i].className !== "known")
        head[i] = head[i].parent();
}
var head=Array.prototype.slice.call(document.queryselectoral(“h4#known”);
对于(变量i=0;i

现在head将是一个包含所有DOM元素的数组,其中包含标签
known
,以及
h4

使用jQuery,您可以使用.has()缩小选择范围,甚至链接其他方法,如:

$(".known").has("h4").css("background","red");
例如,检查一下。请注意,单击该按钮将更改任何div.known的颜色,仅当该元素包含一个h4标记作为子体时


关于jQuery的.has()的文档--

此解决方案将使用类修改所有元素。如果其中至少有一个包含带有h4的div,则已知。我认为这是不准确的-问题旨在修改一个已知包含h4的分区。可以使用jQuery的.has()运算符
我只想在该div中包含一个带有特定标记的div时才更改该div的内部html,在这种情况下。
:)就足够了。这不是这个解决方案的作用。如果这些元素中的任何一个包含div和h4:D,那么您的解决方案将以类为“known”的所有元素为目标。条件是“如果它内部包含一个带有某个特定标记的div(在本例中为h4)”。这就是这个脚本的作用。是的。这就是OP需要的。所有
div.known
元素,其div包含h4.)