用jquery检查类是否存在

时间:2015-06-01 19:52:10

标签: javascript jquery

我正在尝试遍历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);
    };                              

});

1 个答案:

答案 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>

相关问题