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

时间:2015-10-01 03:48:54

标签: javascript html

我经常遇到这个问题而且从来不知道最好的方法。想象一下,我的结构包含以下html的几个实例:

<h4>

对于已知类的每个div,我想更改该div的内部html,只要它包含一个带有某个特定标记的div,在本例中为{{1}}。

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

3 个答案:

答案 0 :(得分:0)

简单,只需使用跨越div h4的选择器,并将其上下文限制为div.class。如果选择器选择至少一个元素,那么if( $('.known div h4').length > 0 ){ $('.known').html('Some html'); } 就像你期望的那样有孩子。

<script>_bwaq.push(['_trackBanner','a8e8a960d7184aaa8b7194bb2b34ded3','banner','open','cf650f6fde0dca38be8da6a41e47e9ac']);addToPendingOnloadBwa(['_trackProductView','733380','-1002']);var landingPageURL=window.location;var vizLayer={type:'product_page',pid:'733380',pname:'Apple iPhone 6 64 GB Silver Smartphone',lp:landingPageURL,image:'https://www.static-src.com/wcsstore/Indraprastha/images/catalog/full/good-guys_apple-iphone-6-64-gb-silver-smartphone_full01.jpg',availability:'true',currency:'IDR',newprice:'10610000',oldprice:"",catid:"54593",catname:"Handphone & Tablet",subcatid:"54611",subcatname:"Handphone",subsubcatid:"54614",subsubcatname:"iPhone",pdesc:'',inventory:'',brand:'Brand{name=Apple, url=apple, anchor=false}',color:'',size:'',prodrating:'',numratings:''};</script>

答案 1 :(得分:0)

是的!你可以这样做。

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();
}

现在head将是一个包含标记known且其中包含h4的所有DOM元素的数组。

答案 2 :(得分:0)

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

$(".known").has("h4").css("background","red");

例如,查看this fiddle。请注意,只有当该元素包含h4标记作为后代时,单击该按钮才会更改任何div.known的颜色。

关于jQuery的文档.has() - https://api.jquery.com/has/