简体   繁体   English

如何使用JQuery显示相应的div并隐藏其他div?

[英]How do I use JQuery to show a corresponding div and hide others?

How do I add the class of active to just the corresponding info div when clicking on each item div. 单击每个项目div时,如何将活动类添加到相应的信息div中。 So, click on Food, the info window for food is displayed. 因此,单击食物,将显示食物的信息窗口。 All others are hidden etc. In my project, my info div is not the next thing in the DOM as it is nested in another place. 所有其他所有对象都被隐藏等。在我的项目中,我的info div不是嵌套在DOM中的下一个对象。 I have seen the data-* but don' data-t know how to use it. 我看过data- *,但不知道如何使用它。

<div class="item">Food</div>
<div class="item">Music</div>
<div class="item">Transport</div>

<div class="info active">
    <h2>All about Food</h2>
    <p>Food is by far the best invention</p>
</div>

<div class="info">
    <h2>All about Music</h2>
    <p>Music is the best</p>
</div>

<div class="info">
    <h2>All about Transport</h2>
    <p>Cars, planes & trains</p>
</div>

I only have the below which adds active to all. 我只有以下内容,这些内容对所有人都有帮助。

$(function() {
    $('.item').on('click', function() {
        $('.info').addClass('active');
    });
});

One option is to add data attributes to your elements and use them to tie your items to the corresponding info divs: 一种选择是将数据属性添加到您的元素,并使用它们将您的项目绑定到相应的信息div:

 $('.item').click(function() { $('.info').removeClass('active'); $('.info[data-info="' + $(this).data('item') + '"]').addClass('active'); }) 
 .info.active { display: block; } .info { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div data-item="food" class="item">Food</div> <div data-item="music" class="item">Music</div> <div data-item="transport" class="item">Transport</div> <div data-info="food" class="info active"> <h2>All about Food</h2> <p>Food is by far the best invention</p> </div> <div data-info="music" class="info"> <h2>All about Music</h2> <p>Music is the best</p> </div> <div data-info="transport" class="info"> <h2>All about Transport</h2> <p>Cars, planes & trains</p> </div> 

<div class="item" data-showid="food">Food</div>
<div class="item" data-showid="music">Music</div>
<div class="item" data-showid="transport">Transport</div>

<div class="info" id="food">
    <h2>All about Food</h2>
    <p>Food is by far the best invention</p>
</div>

<div class="info" id="music">
    <h2>All about Music</h2>
    <p>Music is the best</p>
</div>

<div class="info" id="transport">
    <h2>All about Transport</h2>
    <p>Cars, planes & trains</p>
</div>

JS JS

$(document).ready(function(){
 $(document).on("click",".item", function(){
   $(".info").hide();
   $("div#"+$(this).attr("data-showid")).show();
 });
});

You can use this script. 您可以使用此脚本。 Hide all info div first then show the relevant div using data-showid attribute. 首先隐藏所有信息div,然后使用data-showid属性显示相关的div。

You can do it like this: 您可以这样做:

$(function() {
  $('.item').on('click', function() {
    $(".info.active").add('#' + $(this).attr('data-id')).toggleClass('active');
  });
});

demo 演示

 $(function() { $('.item').on('click', function() { $(".info.active").add('#' + $(this).attr('data-id')).toggleClass('active'); }); }); 
 .info { display: none } .info.active { display: block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="item" data-id="Food">Food</div> <div class="item" data-id="Music">Music</div> <div class="item" data-id="Transport">Transport</div> <div id="Food" class="info active"> <h2>All about Food</h2> <p>Food is by far the best invention</p> </div> <div id="Music" class="info"> <h2>All about Music</h2> <p>Music is the best</p> </div> <div id="Transport" class="info"> <h2>All about Transport</h2> <p>Cars, planes & trains</p> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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