Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery如何判断“的子级”;这";有课吗?_Javascript_Jquery_Html_Twitter Bootstrap - Fatal编程技术网

Javascript jQuery如何判断“的子级”;这";有课吗?

Javascript jQuery如何判断“的子级”;这";有课吗?,javascript,jquery,html,twitter-bootstrap,Javascript,Jquery,Html,Twitter 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. Vo

我有一个引导折叠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>
但是我想将这个处理程序用于anyH3和childdiv组合,所以我需要简单地获取作为对象子对象的div。所以我试过这样的方法

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

无济于事。我在这里遗漏了什么?

div是h3的兄弟姐妹。最安全的方法是,如果添加了其他同级,或者您切换它们,则为h3和div组合添加一个父级,以便遍历到

<div class="togglewrapper"> 

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

</div>
不是
元素的子元素。它是兄弟姐妹。这对于您使用的选择器非常重要

试试这个:

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');
       // }
    });
});
编辑:


我编辑了上面的代码,以显示如何根据
是打开还是关闭来添加/删除要创建的自定义类。

请注意,在当前标记中
不是
元素的子元素。它是一个兄弟姐妹。这很重要,也是你的选择器不起作用的原因。他可以使用
h3+div.in
作为选择器?@LoïcFaure Lacroix你可以,但我认为这不会达到预期效果。我认为OP希望在单击
时检查可折叠div的类,而不仅仅是针对
之后的每个
。这至少是我的理解。这可能是不对的,但是…@War10ck这一切都取决于
这个
。但是现在还不清楚
this
从何而来。@LoïcFaure Lacroix可能是错误的,但从措辞上看,它听起来像
$(“#demo”)
起了作用,所以OP用
var isOpen=$(this)替换了这一行。find('div')。hasglass('in')…好主意。我刚刚发现了我的错误,并开始使用
var isOpen=$(this)
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');
       // }
    });
});