如何使可扩展 div 显示第一个元素并切换休息

How to make expandable div to show first element and toggle rest

我的网页上有几个不同类型的新闻报道部分。有些有图像,有些没有(只有文字)。我希望能够显示每个故事的第一段或第一个 div,然后单击切换 div(故事)的全部内容。

我在 CSS 技巧网站上找到了这段代码:

var news = 2;

hidenews = "- Hide news archive";
shownews = "+ Show news archive";

$(".archive").html( shownews );
$(".news:not(:lt("+news+"))").hide();

$(".archive").click(function (e) {
   e.preventDefault();
       if ($(".news:eq("+news+")").is(":hidden")) {
           $(".news:hidden").show();
           $(".archive").html( hidenews );
       } else {
           $(".news:not(:lt("+news+"))").hide();
           $(".archive").html( shownews );
       }
});

<div class="news">First news</div>
<div class="news">Second news</div>
<div class="news">Third news</div>
<a class="archive" href="#"></a>

效果很好,但只有一个 div。当我单击显示按钮时,页面上有多个,它会打开所有 div。

任何人都可以帮助我编辑代码,以便在点击时只打开一个故事而不是所有故事吗?

每个元素都需要 toggle 按钮。

//Hide all content
$('.content').hide();
$('.archive').click(function(){
  //Get content DIV
  var content = $(this).parent('.news').find('.content');
  //Content toggle
  content.toggle();
  //Show / Hide adjusted
  $(this).text(content.is(":visible") ? 'Hide' : 'Show');
});

$('.content').hide();
$('.archive').click(function(){
  var content = $(this).parent('.news').find('.content');
  content.toggle();
  $(this).text(content.is(":visible") ? 'Hide' : 'Show');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="news">First news
 <div class="content">First news Content</div>
  <a class="archive" href="#">Show</a>
</div>
<div class="news">Second news
  <div class="content">Second news Content</div>
  <a class="archive" href="#">Show</a>
</div>
<div class="news">Third news
  <div class="content">Third news Content</div>
  <a class="archive" href="#">Show</a>
</div>

您也可以使用 bootstrap 手风琴。您可能需要稍微编辑一下。

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Accordion </h2>
 
  <div class="panel-group" id="accordion">
    <div class="panel panel-default">
      <div class="panel-heading">
        <h4 class="panel-title">
          <a data-toggle="collapse" data-parent="#accordion" href="#collapse1">Collapsible Group 1</a>
        </h4>
      </div>
      <div id="collapse1" class="panel-collapse collapse in">
        <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,
        </div>
      </div>
    </div>
    <div class="panel panel-default">
      <div class="panel-heading">
        <h4 class="panel-title">
          <a data-toggle="collapse" data-parent="#accordion" href="#collapse2">Collapsible Group 2</a>
        </h4>
      </div>
      <div id="collapse2" class="panel-collapse collapse">
        <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,
        </div>
      </div>
    </div>
    <div class="panel panel-default">
      <div class="panel-heading">
        <h4 class="panel-title">
          <a data-toggle="collapse" data-parent="#accordion" href="#collapse3">Collapsible Group 3</a>
        </h4>
      </div>
      <div id="collapse3" class="panel-collapse collapse">
        <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,
       </div>
      </div>
    </div>
  </div>
</div>
    
</body>
</html>

使用jQuery手风琴feature.Check这个link https://jqueryui.com/accordion/

这是您的代码的修改版本

    $(document).ready(function(){
    var news = 0;

    hidenews = "- Hide news archive";
    shownews = "+ Show news archive";

    $(".archive").html( shownews );
    $(".news").hide();
    $(".archive").click(function (e) {
       e.preventDefault();
    var $container = $(e.currentTarget).closest('.accordion-container');
           if ($container.find(".news:eq("+news+")").is(":hidden")) {
               $container.find(".news:not(:lt("+news+"))").slideDown();
               $container.find(".archive").html( hidenews );
           } else {
               $container.find(".news:not(:lt("+news+"))").slideUp();
               $container.find(".archive").html( shownews );
           }
    });

    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <body>
    <div class="accordion-container">
    <div class="title">First news</div>
    <div class="news">Second news</div>
    <div class="news">Third news</div>


    <a class="archive" href="#"></a>
    </div>
    <div class="accordion-container">
    <div class="title">First news</div>
    <div class="news">Second news</div>
    <div class="news">Third news</div>


    <a class="archive" href="#"></a>
    </div>
    <div class="accordion-container">
    <div class="title">First news</div>
    <div class="news">Second news</div>
    <div class="news">Third news</div>


    <a class="archive" href="#"></a>
    </div>
    <div class="accordion-container">
    <div class="title">First news</div>
    <div class="news">Second news</div>
    <div class="news">Third news</div>


    <a class="archive" href="#"></a>
    </div>
    <div class="accordion-container">
    <div class="title">First news</div>
    <div class="news">Second news</div>
    <div class="news">Third news</div>


    <a class="archive" href="#"></a>
    </div>

    </body>