当用户点击其对应的父DIV时,我正在尝试显示/隐藏DIV。
HTML:
<div class="header" id="header_1"> </div>
<div class="body" id="body_1"> </div>
<div class="header" id="header_2"> </div>
<div class="body" id="body_2"> </div>
jQuery的:
$('.body')hide(); <--- hide all on load
$('.header').click(function(){
var currentHeader = $(this).attr('id');
//some logic to show the body div below the header that was clicked, and hide all the others
});
答案 0 :(得分:1)
隐藏所有body
div然后使用单击的div,获取应用了body类的下一个div
$('.header').click(function(){
var currentHeader = $(this);
// hide all the body divs
$('.body').hide();
// show the next body div
currentHeader.next('.body').show();
});
答案 1 :(得分:1)
这是代码在单击标题时显示/隐藏子元素。 demo
$('.body').hide();
$('.header').click(function() {
if (!$(this).hasClass('Active')) {
$(this).find('.body').show();//show child div
$(this).addClass('Active');
} else {
$(this).find('.body').hide();//hide child div
$(this).removeClass('Active');
}
});
答案 2 :(得分:1)
$('body').on('click.headerClick', '.header:has(.body)', function (e) {
$('.header .body').not($(this).find('.body').show()).hide();
});
<body>
- 元素上分配单个侦听器,侦听具有类header
的任何元素上的单击事件,并且至少有一个后代有一个班级body
。如果单击此类元素,则会显示所单击的header
具有类body
的所有后代元素,之后,它会隐藏具有类body
的所有元素,该类具有类header
的祖先{1}}。答案 3 :(得分:0)
你的意思是这样吗?
$(".header").on("click", function() {
$(".body").not($(this).find(".body").show()).hide();
});
答案 4 :(得分:0)
最简单的方法是隐藏所有元素,然后只显示当前元素:
$('.body').hide();
$('.header').click(function(){
// hide all other elements
$('.body').hide();
// show the current one
$(":first-child", $(this)).show();
});
如果存储对当前活动元素的引用,则更好的解决方案。
var activeElement = null;
$('.body').hide();
$('.header').click(function(){
// hide the last one
if(activeElement) {
activeElement.hide();
}
// show the current one
activeElement = $(":first-child", $(this));
activeElement.show();
});
答案 5 :(得分:0)
找到一个聪明的解决方法:(感谢您的帮助,尽管!:-))
HTML:
<ul>
<li class='title' id='title 2> </li>
<li class='section' id ='section 2'> </li>
</ul>
jQuery的:
$('.title').click(function(){
$('.section').slideUp('fast');
$(this).siblings('.section').slideDown('fast');
});