我有2个div,里面有2个div,就像这个
<div id="div1" class="div">
<div class="flip">Click to slide down panel</div>
<div class="panel">Hello world!</div>
</div>
<div id="div2" class="div">
<div class="flip">Click to slide down panel</div>
<div class="panel">Hello world!</div>
</div>
我的JavaScript是
$(document).ready(function(){
$(".flip").click(function(){
$( ".panel" ).children( ".panel" ).slideToggle("slow");
});
});
示例位于https://jsfiddle.net/msjaasfk/2/
所以我希望当点击一个.flip
时,只显示同一div中的.panel
而不是所有带.panel
类的div。
答案 0 :(得分:1)
您正在选择并切换所有的.panel
元素。修改您的代码,以便只切换与所单击元素对应的.panel
元素:
$(".flip").click(function() {
$(this).next().slideToggle("slow");
});
this
是对点击的.flip
元素.next()
method将选择下一个兄弟元素(在本例中为.panel
)。作为旁注,您还可以修改代码,以便一次只打开一个面板:
$(".flip").click(function() {
$('.panel').not($(this).next()).slideUp();
$(this).next().slideToggle("slow");
});
.panel,
.flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
.panel {
padding: 50px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1" class="div">
<div class="flip">Click to slide down panel</div>
<div class="panel">Hello world!</div>
</div>
<div id="div2" class="div">
<div class="flip">Click to slide down panel</div>
<div class="panel">Hello world!</div>
</div>
答案 1 :(得分:1)
在您的上下文中,.panel
将选择panel
类的所有元素。在.flip
元素的点击事件中,您可以使用jQuery的.next()仅选择下一个.panel
您可能需要指定.panel
选择器,以防您的HTML结构在div内部改变
$(this).next(".panel").slideToggle("slow");
这是完整的例子
$(document).ready(function() {
$(".flip").click(function() {
$(this).next(".panel").slideToggle("slow");
});
});
.panel,
.flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
.panel {
padding: 50px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1" class="div">
<div class="flip">Click to slide down panel</div>
<div class="panel">Hello world!</div>
</div>
<div id="div2" class="div">
<div class="flip">Click to slide down panel</div>
<div class="panel">Hello world!</div>
</div>