javascript - jQuery 如何判断 "this"的子级是否有一个类?

标签 javascript jquery html twitter-bootstrap

我有一个 Bootstrap 可折叠 div:

<h3 data-toggle="collapse" data-target="#demo" class="collapse-button" collapse>
      simple collapsible
    </h3>
    <div id="demo" class="collapse">
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates dolor vel tenetur quod voluptate debitis nemo et mollitia dicta voluptas.
    </div>

它们不提供任何内置方法来根据折叠元素的状态在折叠元素(此处为 H3)上设置类。他们的代码只是在显示折叠元素时设置一个“in”类。

我需要做的是创建一种通用方法来在 H3 上设置类,以便我可以在其旁边显示正确的图标。

我想我可以使用 jQuery 来检测子 div 是否具有“in”类。

到目前为止,我还没有想到这一点。

如果我按名称选择子 div,它会起作用:

$(function() {
 $('.collapse-button').on('click', function(event) {
   event.preventDefault();
   var isOpen = $('#demo').hasClass('in'); 
   alert(isOpen);
 });
});

但是我想将此处理程序用于任何 H3 和子 div 组合,因此我需要简单地获取作为对象子级的 div。所以我尝试了类似的事情

  $(this).find('div').hasClass('in');

没有效果。我在这里缺少什么?

最佳答案

<div> 不是 <h3> 的子级元素。它是一个 sibling 。这对于您使用的选择器来说非常重要。

试试这个:

if($(this).next('.in').length) {
    ...
}

完整的代码如下所示:

$(function() {
    $('.collapse-button').on('click', function(event) {
       event.preventDefault();
       var isOpen = ($(this).next('.in').length) ? true : false; 
       alert(isOpen);
       // Set your class here...
       // var $next = $(this).next();
       // if($next.hasClass('in')) {
       //     $next.addClass('your-custom-class');
       // } else {
       //     $next.removeClass('your-custom-class');
       // }
    });
});

编辑:

我编辑了上面的代码,以展示如何根据 <div> 是否添加/删除要创建的自定义类。打开或关闭。

关于javascript - jQuery 如何判断 "this"的子级是否有一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23897657/

相关文章:

javascript - FormData 为空有问题吗?

javascript - jQuery,如果文件输入扩展名是 .pdf 则运行函数

javascript - 添加到 HTML 表单而不丢失 Javascript 中的当前表单输入信息

javascript - 'this' 指的是在方法内部定义的 IIFE 内部定义的内部箭头函数吗?

javascript - 如何在 native react 中停止 setInterval

javascript - jQuery 中的平滑切换

javascript - 简单的 JavaScript 获取类型 ="radio"值以进行总结

php - WooCommerce update_checkout 不会更新送货方式

php - 我需要html标签来做回车吗?

html - 为什么这些 CSS 规则如此频繁地重复?