我有以下代码
<div id="ad">
<div id="adsensebanner">
<iframe id="google_ad_randomnumber">
</iframe>
</div>
</div>
并且我正在寻找一种使用jQuery和CSS属性匹配的方法来做到这一点:
<div id="ad">
<div id="adsensebanner" class="addedclass">
<iframe id="google_ad_randomnumber">
</iframe>
</div>
</div>
关于搜索具有另一个父div并将div附加到子类的div的任何想法?
答案 0 :(得分:2)
您对各种答案的评论表明您的HTML无效,并且其中有多个id="adsensebanner"
,但其中只有一个id="ad"
。
您最好的选择是使HTML有效。只能有一个元素,其中包含id="adsensebanner"
。
但是,如果出于某些原因,您只想在id="ad"
内定位该元素,则将其定位:
document.querySelector("#ad #adsensebanner").classList.add("addedclass");
或使用jQuery:
$("#ad #adsensebanner").addClass("addedclass");
说“只有在#adsensebanner
内,才将'addsedclass'添加到#ad
中。”可能存在有效的用例(如果带有id="adsensebanner"
的一个元素可能在#ad
之内,也可能不在其中,并且您不想添加该类),但是它们很少见。 / p>
如果您将HTML改正为只有一个id="adsensebanner"
,并且您总是想添加该类,则:
document.getElementById("adsensebanner").classList.add("addedclass");
或使用jQuery:
$("#adsensebanner").addClass("addedclass");
在评论中您说过:
双重划分检查肯定会起作用,但是,我的第二个div的ID名称有所不同,因此我想通过attr(例如
div[id*='adsensebanner']
)进行选择。有什么解决方法吗?
是的,您可以使用任何attribute substring selectors。例如,如果id
将始终以adsensebanner
(id="adsensebanner1"
,id="adsensebanner2"
等)开始,则选择器将与{ {1}}或jQuery将是querySelector
。 (或者您也可以使用您提到的包含"#ad div[id^=adsensebanner]"
或*=
(如果它总是以某些东西结尾)。)
答案 1 :(得分:0)
尝试以下方法:
$('#adsensebanner', window.parent.document).addClass("addedclass");
答案 2 :(得分:0)
简单的JS可以解决问题。而且我看不到该div位于iFrame中。
var p = document.getElementById("ad");
p.querySelector("[id='adsensebanner']").classList.add("addedClass");
<div id="ad">
<div id="adsensebanner">
<iframe id="google_ad_randomnumber">
</iframe>
</div>
</div>
答案 3 :(得分:0)
这仅通过JavaScript:
document.getElementById("ad").getElementsByTagName("div")[0].classList.add("addedClass");
$( "#ad div:nth-last-child(1)" ).addClass("addedClass");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ad">
<div id="adsensebanner">
<iframe id="google_ad_randomnumber">
</iframe>
</div>
</div>
<div id="ad1">
<div id="adsensebanner">
<iframe id="google_ad_randomnumber">
</iframe>
</div>
</div>
这将仅向具有父div id =“ ad”的div添加一个类