如何使可扩展 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>
我的网页上有几个不同类型的新闻报道部分。有些有图像,有些没有(只有文字)。我希望能够显示每个故事的第一段或第一个 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>