Jquery-检查类是否存在于 Div 中

新手上路,请多包涵

我一直在尝试检查 div 中是否存在一个类。但它总是导致长度为 0。这是我的代码:-

 <div id="accordion2" class="accordion" >
  <div class="accordion-group">
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
        <div class="align-nav arrow-active">OSTOMY PRODUCTS</div></a>
    </div>
    <div id="collapseOne" class="accordion-body in collapse">
        <div class="accordion-inner">
            <ul>
                <li><a href="#">Professional Resources</a></li>
                <li><a href="#">One-piece Pouching</a></li>
            </ul>
        </div>
    </div>
  </div>
  <div class="accordion-group">
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
        <div class="align-nav arrow-inactive">LEARNING CENTER</div>
    </a> </div>
    <div id="collapseTwo" class="accordion-body collapse">
        <div class="accordion-inner">
            <ul>
                 <li><a href="#">Videos</a></li>
                 <li><a href="#">Before Your Surgery</a></li>
            </ul>
        </div>
    </div>
  </div>
  <div class="accordion-group">
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
      <div class="align-nav">PROFESSIONAL RESOURCES </div>
    </a> </div>
  </div>
  <div class="accordion-group">
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
           <div class="align-nav">PROFESSIONAL RESOURCES </div>
    </a> </div>
  </div>
</div>

对于前 2 个 div $(this).find(‘accordion-body’).length 应该是 1。但它仍然显示 0。我的 Jquery 代码如下:-

 $('.accordion-heading').click(function() {
            if($(this).find('accordion-body').exist()) {
                alert('hi');
                if($(this).find('.collapsed').length > 0) {
                    alert('hi');
                    //$(this).find('.accordion-toggle .align-nav').removeClass('arrow-active').addClass('arrow-inactive');
                }
                else {
                    alert('hi');
                    //$(this).find('.accordion-toggle .align-nav').removeClass('arrow-inactive').addClass('arrow-active');
                }
            }
        });

我需要得到 $(this).find(‘accordion-body’).length = 1;请提供解决方案。

原文由 VIVEK MISHRA 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 297
2 个回答

您应该在 find 中选择一个类选择器( . ),因为您正在搜索类

.find('.accordion-body')
     //^--- here

还要注意 accordion-body 存在于父 div 中(在当前元素旁边,即这个( .accordion-heading ))所以使用 parent() 或者如果你确定它总是成为下一个 div 然后你可以使用 .next

试试这个

$(this).parent().find('.accordion-body').length == 1;

或者你可以使用 hasClass()

原文由 bipen 发布,翻译遵循 CC BY-SA 4.0 许可协议

那将是 '.accordion-body' (句点很重要——它是类选择器)。

另外 .exist() 不是 jQuery 方法,但我假设您已经在某处定义了它。

原文由 Explosion Pills 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题