Javascript jquery将类添加到最近的父类
我有一个表单,一些字段设置在3组可折叠的div中,我不想在验证之后,如果任何字段有错误,父div将收到一个类来展开它Javascript jquery将类添加到最近的父类,javascript,jquery,Javascript,Jquery,我有一个表单,一些字段设置在3组可折叠的div中,我不想在验证之后,如果任何字段有错误,父div将收到一个类来展开它 <div class="panel-group" id="fields_panel"> <div class="panel panel-primary"> <div id="basic_info_fields" class="panel-collapse collapse in"> <!-- add class "in" --
<div class="panel-group" id="fields_panel">
<div class="panel panel-primary">
<div id="basic_info_fields" class="panel-collapse collapse in"> <!-- add class "in" -->>
<div class="panel-body">
<div class="row clearfix">
<div class="col-md-12 m-b-0">
<div class="form-group">
<div class="form-line error"> <!-- if this div has "error" -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
但它将类中的应用于所有面板折叠
。
我应该怎么做才能将其仅应用于具有该类的子元素的顶级父级,而不是所有父级?使用以下代码:
$('.panel').find('.form-line.error').each(function(){
$(this).closest('.panel-collapse').addClass('in');
});
$(此)
指的是具有错误
类的指定元素。您的hasClass
无法工作,因为元素
是一个jQuery对象数组,而不仅仅是一个
为什么需要它-为什么不将类包含在选择器中:
$('.panel').find('.form-line.error').closest('.panel-collapse').addClass('in');
这也会停止在数组中没有类的元素之间循环,从而提高效率elem.parent().parent().parent().parent().parent().parent().find('.panel collapse').addClass('in');(可能是太多的parent()。如果不起作用,请尝试删除一些。)@Pete这是代码的一个小简化。。。它产生完全相同的输出。@Pete我对两个答案都投了赞成票,但我还是喜欢这个,因为它消除了读者的歧义.closest()
返回单个元素。但是,如果在jQuery集合上调用它,它将返回一个集合。这是读者必须事先知道的内部知识。顺便说一句,这正是让手术失败的原因。。。使用.each()
会立即向读者暗示,可能会返回一个或多个结果,并且他们希望为每个结果做点什么。@Pete至于复制和粘贴某人的答案以更改像我这样微不足道的内容是完全不道德的。如果我做了任何重大的修改,我100%同意你的意见,但是我没有必要为我所做的修改而发火。@Pete撤销了我的编辑,在评论中给我打电话,并教训我有关协议的问题。谢谢,这个解决方案非常有效,老实说,我正在努力学习jquery,有时候我根本不知道自己在做什么。
$('.panel').find('.form-line.error').closest('.panel-collapse').addClass('in');