Javascript jQuery如何判断“的子级”;这";有课吗?
我有一个引导折叠div: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
<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');
// }
});
});