我试图通过单击标题来添加/删除元素类。我面临的问题是我要定位的div没有唯一的类,没有ID,并且与我点击的标题位于同一级别:
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#text-background" data-parent="#settings-accordeon" class="collapsed">achtergrond</a>
</h4>
</div>
<div id="text-background" class="panel-collapse collapse">
~~ Something in in it.
</div>
</div>
我有4个这样的div在彼此之下。
我正在尝试在jQuery中找到正确的选择器,以便能够执行以下操作:
这是我到目前为止所得到的:
$('.panel-heading').click(function() {
$('.panel-collapse').addClass('in');
});
但是因为我有这个类的多个div,所以它打开了所有...
答案 0 :(得分:0)
现在你可以尝试这个
$('.panel-heading').click(function() {
$('.panel-collapse').removeClass('in');
$(this).next('.panel-collapse').addClass('in');
});
演示
$(document).ready(function(){
$('.panel-heading').click(function() {
$('.panel-collapse').removeClass('in');
$(this).next('.panel-collapse').addClass('in');
});
});
.in{background:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#text-background" data-parent="#settings-accordeon" class="collapsed">achtergrond</a>
</h4>
</div>
<div id="text-background" class="panel-collapse collapse">
~~ Something in in it.
</div>
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#text-background" data-parent="#settings-accordeon" class="collapsed">achtergrond</a>
</h4>
</div>
<div id="text-background" class="panel-collapse collapse">
~~ Something in in it.
</div>
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#text-background" data-parent="#settings-accordeon" class="collapsed">achtergrond</a>
</h4>
</div>
<div id="text-background" class="panel-collapse collapse">
~~ Something in in it.
</div>
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#text-background" data-parent="#settings-accordeon" class="collapsed">achtergrond</a>
</h4>
</div>
<div id="text-background" class="panel-collapse collapse">
~~ Something in in it.
</div>
</div>
答案 1 :(得分:0)
这将有助于
$('.panel-collapse.collapse').addClass('in');
这只会选择同时具有panel-collapse
和collapse
类的元素。
答案 2 :(得分:0)
你可以尝试:
$('.panel-heading').click(function() {
$(this).closest('.panel-collapse').addClass('in');
});
答案 3 :(得分:0)
您可以使用this
来引用当前选择器
<强>的jQuery 强>
$('.panel-heading').click(function() {
$(this).siblings('.panel-collapse.collapse').addClass('in');
});
答案 4 :(得分:0)
为了选择同一级别的元素,您可以使用.next()
这样的函数:
$('.panel-heading').on('click', function() {
$(this).next('.panel-collapse.collapse').addClass('in');
});
.in {
padding:10px;
border: 2px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#text-background" data-parent="#settings-accordeon" class="collapsed">achtergrond</a>
</h4>
</div>
<div id="text-background" class="panel-collapse collapse">
~~ Something in in it.
</div>
</div>
答案 5 :(得分:0)
您可以使用next
,因为类panel-collapse collapse
的div是panel-heading
div的直接兄弟,也使用toggleClass,这在您的情况下更好:
$('.panel-heading').click(function() {
$(this).next('div').toggleClass('in');
});
答案 6 :(得分:0)
您可以使用此选择器
$('.panel .panel-collapse:first-child').addClass('in');
或
$('.panel-heading').next('.panel-collapse').addClass('in);
答案 7 :(得分:0)
您可以将代码更改为仅适用于.panel-heading
的直接兄弟:
$('.panel-heading').click(function() {
$(this).siblings('.panel-collapse').addClass('in');
});
请注意this
with的用法是指引发事件的元素(即click
事件)。
答案 8 :(得分:0)
基本上你只需要找到下一个兄弟的当前元素并为其添加一个类:
$('.panel-heading').click(function() {
$(this).next().addClass('in');
});
如果面板折叠总是在面板标题之后,那将会有效,否则为了安全起见,你可以这样做:
$('.panel-heading').click(function() {
$(this).next(".panel-collapse").addClass('in');
});
答案 9 :(得分:0)
使用点击的div的引用并尝试以下代码: -
$('.panel-heading').click(function() {
$(this).next('.panel-collapse').addClass('in');
});
希望这适用于您的情况。