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

时间:2018-03-28 16:26:01

标签: javascript jquery

单击每个项目div时,如何将活动类添加到相应的信息div中。因此,点击食物,显示食物的信息窗口。所有其他都是隐藏的等等。在我的项目中,我的信息div不是DOM中的下一个东西,因为它嵌套在另一个地方。我已经看过数据 - *但是'数据 - 知道如何使用它。

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

我只有下面的所有内容。

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

3 个答案:

答案 0 :(得分:2)

一个选项是向您的元素添加数据属性,并使用它们将您的项目绑定到相应的信息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>

答案 1 :(得分:0)

<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

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

您可以使用此脚本。首先隐藏所有信息div,然后使用data-showid属性显示相关的div。

答案 2 :(得分:0)

你可以这样做:

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

<强>演示

$(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>