我经常遇到这个问题而且从来不知道最好的方法。想象一下,我的结构包含以下html的几个实例:
<h4>
对于已知类的每个div,我想更改该div的内部html,只要它包含一个带有某个特定标记的div,在本例中为{{1}}。
实现这一目标的最佳方法是什么?我知道我可以通过获取已知类的内部html并进行正则表达式匹配来实现。但是基于标签有更强大的方法吗?
答案 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/