[英]jQuery show / hide multiple divs
I need help in expand/collapse div using jQuery.我需要使用 jQuery 展开/折叠 div 的帮助。 Here is the problem.
这是问题所在。
I have an HTML page showing car names and their description as shown below.我有一个显示汽车名称及其描述的 HTML 页面,如下所示。
When the user clicks on any carTitle div, corresponding carDetail div should be expanded (if already collapsed).当用户点击任何 carTitle div 时,相应的 carDetail div 应该展开(如果已经折叠)。 When the user clicks on that div again, the corresponding carDetail div should be collapsed.
当用户再次点击那个 div 时,相应的 carDetail div 应该被折叠。
Initially, carToyota div should be expanded on pageLoad, and other divs are collapsed最初carToyota div应该在pageLoad上展开,其他div是折叠的
User can keep multiple divs expanded at the same time用户可以同时保持多个 div 展开
var collapsed = false; $(".carTitle").on('click', function(e) { collapsed = !collapsed; var carDetailsDiv = $(event.currentTarget).next(); if (collapsed == true) { $(carDetailsDiv).hide(); } else { $(carDetailsDiv).show(); } event.preventDefault(); return false; });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="carItem01_container"> <div id="carToyota" class="carTitle"> <div class="carName">Toyote </div> </div> <div id="carToyota_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem02_container"> <div id="carMazda" class="carTitle"> <div class="carName">Mazda </div> </div> <div id="carMazda_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem03_container"> <div id="carVolvo" class="carTitle"> <div class="carName">Volvo </div> </div> <div id="carVolvo_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div>
The above code does not work as expected.上面的代码没有按预期工作。 Can anybody help??
有人可以帮忙吗??
Define your own class called collapsed
, and set it to display: none
定义您自己的名为
collapsed
的类,并将其设置为display: none
collapsed {
display: none;
}
Then, you can use jQuery's .toggleClass()
to toggle this class, while also being able to simply add the class to the carDetails
divs to hide them by default然后,您可以使用 jQuery 的
.toggleClass()
来切换这个类,同时也可以简单地将该类添加到carDetails
div 以默认隐藏它们
Finally, you can use $(this).next()
, rather than event.currentTarget.next()
最后,您可以使用
$(this).next()
,而不是event.currentTarget.next()
Here's the Demo:这是演示:
$(".carTitle").on('click', function(e) { $(this).next().toggleClass('collapsed'); });
.collapsed { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="carItem01_container"> <div id="carToyota" class="carTitle"> <div class="carName">Toyote </div> </div> <div id="carToyota_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem02_container"> <div id="carMazda" class="carTitle"> <div class="carName">Mazda </div> </div> <div id="carMazda_show" class="carDetails collapsed"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem03_container"> <div id="carVolvo" class="carTitle"> <div class="carName">Volvo </div> </div> <div id="carVolvo_show" class="carDetails collapsed"> <div class="carDescription"> ... </div> </div> </div>
By default keep all .carDetails
div as hidden.默认情况下,将所有
.carDetails
div 保持为隐藏状态。
Keep open
class on first car div.在第一个汽车 div 上保持
open
课。
Remove/Add .open
class on the carDetails
that is clicked.在单击的
carDetails
上删除/添加.open
类。
$(".carTitle").on('click', function(e) { var carDetailsDiv = $(event.currentTarget).next(); if ($(carDetailsDiv).hasClass('open')) { $(carDetailsDiv).removeClass('open'); } else { $(carDetailsDiv).addClass('open'); } event.preventDefault(); return false; });
.carDetails { display: none; } .carDetails.open { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="carItem01_container"> <div id="carToyota" class="carTitle"> <div class="carName">Toyote </div> </div> <div id="carToyota_show" class="carDetails open"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem02_container"> <div id="carMazda" class="carTitle"> <div class="carName">Mazda </div> </div> <div id="carMazda_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem03_container"> <div id="carVolvo" class="carTitle"> <div class="carName">Volvo </div> </div> <div id="carVolvo_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div>
var collapsed = false; $(".carTitle").on('click', function(e) { collapsed = !collapsed; var carDetailsDiv = $(event.currentTarget).next(); $(this).siblings('.carDetails').toggleClass('show'); event.preventDefault(); return false; });
.carDetails {display:none;} .show {display:block;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="carItem01_container"> <div id="carToyota" class="carTitle"> <div class="carName">Toyote </div> </div> <div id="carToyota_show" class="carDetails show"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem02_container"> <div id="carMazda" class="carTitle"> <div class="carName">Mazda </div> </div> <div id="carMazda_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div> <div id="carItem03_container"> <div id="carVolvo" class="carTitle"> <div class="carName">Volvo </div> </div> <div id="carVolvo_show" class="carDetails"> <div class="carDescription"> ... </div> </div> </div>
Try this one i have using toggle class in your description div ....试试这个我在你的描述 div 中使用切换类的......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.