简体   繁体   English

jQuery 显示/隐藏多个 div

[英]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 页面,如下所示。

  1. 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 应该被折叠。

  2. Initially, carToyota div should be expanded on pageLoad, and other divs are collapsed最初carToyota div应该在pageLoad上展开,其他div是折叠的

  3. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM