我正在尝试遍历Html并查找元素是否具有特定子元素:
$('#thisFormat article div p').each(function() {
if ( $(this).parent().find('.specialclass').length) {
var LowerTrue="Yes";
IsLower.push(LowerTrue);}
else{
var LowerTrue="No";
IsLower.push(LowerTrue);
};
});
但我只得到No
个答案,尽管有些元素有specialclass
。此外,元素中还有一个::before
标记,我想检查它是否存在:
<i title="Exists" class="specialclass">
::before
</i>
那么有可能解决我的问题吗?任何建议都非常感谢。
HTML:
<div id="thisFormat">
<article>
<div>
<p class="specialclass">
<i title="Hello" class="specialclass">
::before
</i>
</p>
</div>
</article>
<article>
<div>
<p class="specialclass">
</p>
</div>
</article>
</div>
这有效:
$('#thisFormat article div p').each(function() {
if ( $(this).children("i").length) {
var LowerTrue="Yes";
IsLower.push(LowerTrue);}
else{
var LowerTrue="No";
IsLower.push(LowerTrue);
};
});
答案 0 :(得分:2)
要检查::before
内的.each()
标记,您可以
$(/* get the <i> you want */).html == '::before';
你的数组存在的问题是,当你说parent()
位于<i>
时,问<p>
你是什么
尝试以下
var IsLower = []
$('#thisFormat article div p').each(function() {
if ($(this).find('.specialclass').length == 1) {
var LowerTrue = "Yes";
IsLower.push(LowerTrue);
} else {
var LowerTrue = "No";
IsLower.push(LowerTrue);
};
});
$('#out').html(IsLower);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thisFormat">
<article>
<div>
<p>
<i title="Exists">
</i>
</p>
<p>
<i title="Exists" class="specialclass">
</i>
</p>
</div>
</article>
</div>
<div id="out"></div>