Javascript 每个相同父div的jQuery使用:n子级切换嵌套div(如果多于3个)
我有两个内容不同的相同父级Javascript 每个相同父div的jQuery使用:n子级切换嵌套div(如果多于3个),javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有两个内容不同的相同父级divs。如果父div有3个以上的子divs,则应在div末尾显示“显示更多”文本,该文本将滑动所有剩余的隐藏divs。我不熟悉JavaScript和jQuery,我不能完全理解选择器。这是我的密码: <div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="chil
div
s。如果父div
有3个以上的子div
s,则应在div
末尾显示“显示更多”文本,该文本将滑动所有剩余的隐藏div
s。我不熟悉JavaScript和jQuery,我不能完全理解选择器。这是我的密码:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
</div>
<span class="showhide">Show-hide</span>
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
</div>
<span class="showhide">Show-hide</span>
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
</div>
<span class="showhide">Show-hide</span>
只有代码的第一部分起作用。它在每个父级div
中隐藏超过3个div
。但是隐藏文本和切换不起作用
我尝试了多种变体,例如将span
放在父div
中,将选择器更改为。最近的,也尝试使用:gt()
而不是:n子,但都不起作用。您可以这样做
$(".parent").each(function() {
$(this).find(".child:gt(2)").hide();
});
$(".showhide").click(function() {
$(this).prev().find(".child:gt(2)").slideToggle();
});
.gt()
选择器将返回索引大于指定参数的元素
如果要在切换后更改文本,请使用以下代码
$(".parent").each(function() {
$(this).find(".child:gt(2)").hide();
});
$(".showhide").click(function() {
var obj = this;
$(this).prev().find(".child:gt(2)").slideToggle(function() {
if ($(this).is(":visible"))
$(obj).text("hide");
else
$(obj).text("show more");
});
});
请注意,您需要使用slideToggle
的回调功能来更改文本,因为slideToggle
是异步的
你可以这样做
$(".parent").each(function() {
$(this).find(".child:gt(2)").hide();
});
$(".showhide").click(function() {
$(this).prev().find(".child:gt(2)").slideToggle();
});
.gt()
选择器将返回索引大于指定参数的元素
如果要在切换后更改文本,请使用以下代码
$(".parent").each(function() {
$(this).find(".child:gt(2)").hide();
});
$(".showhide").click(function() {
var obj = this;
$(this).prev().find(".child:gt(2)").slideToggle(function() {
if ($(this).is(":visible"))
$(obj).text("hide");
else
$(obj).text("show more");
});
});
请注意,您需要使用slideToggle
的回调功能来更改文本,因为slideToggle
是异步的
您可以使用css隐藏它:
.parent div:nth-child(n+4) {
display: none;
}
并使用jquery切换类以使其可见/隐藏
$('.parent').filter(函数(){
return$(this).children().length您可以使用css隐藏它:
.parent div:nth-child(n+4) {
display: none;
}
并使用jquery切换类以使其可见/隐藏
$('.parent').filter(函数(){
return$(this).children().length原始小提琴和编辑的小提琴是相同的链接。请更正。谢谢。如果div
s小于3,是否有可能用您的方法隐藏文本show hide
?如果(!divs.length)
-我猜是这样:)感谢您的支持!原始fiddle和编辑的fiddle是相同的链接。请更正,谢谢。如果div
s小于3,是否可以用您的方法隐藏文本show hide
?如果(!divs.length)
-我想是这样:)谢谢您的支持!