gpt4 book ai didi

javascript - 使用 JQuery 切换 div 后重新加载 CSS

转载 作者:行者123 更新时间:2023-11-28 04:50:13 25 4
gpt4 key购买 nike

我发现了一种非常干净简单的方法,可以通过 Tim Robert-Fitzgerald 在 Codepen 上的过滤器切换 div 的可见性。它在我的网站上运行得很好,但是我需要稍微扩展它以满足我的需要。

默认情况下,我有一个 nth-child 设置,可以删除第二个 div 的边框,但是当切换 div 时,这不会重新应用于第二个 div。实际上它仍然适用,但这不可见,因为 div 设置为 display:none;

一旦 div 被切换,我怎样才能让第 n 个子元素重新计算?

var $btns = $('.btn').click(function() {
if (this.id == 'all') {
$('#parent > div').fadeIn(450);
} else {
var $el = $('.' + this.id).fadeIn(450);
$('#parent > div').not($el).hide();
}
$btns.removeClass('active');
$(this).addClass('active');
})
* {
box-sizing: border-box;
}
body {
padding: 10px;
background: #ecf0f1;
font-family: helvetica, sans-serif;
font-weight: 200;
}
.btn {
border: none;
background: linear-gradient(to bottom, #3498db, #2980b9);
border-radius: 3px;
font-family: Arial;
color: #ffffff;
padding: 5px 10px 5px 10px;
text-decoration: none;
margin: 5px;
}

.active {
background: linear-gradient(to bottom, #3cb0fd, #3498db);
text-decoration: none;
}
.box {
background:#2980b9;
padding: 10px;
height: 100px;
width: calc(33% - 10px);
float: left;
margin: 5px;
text-align: center;
border-radius: 3px;
color: #fff;
border:4px solid #000;
}

.box:nth-child(2) {
border:none;
}

.spacer {
clear: both;
height: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="active btn" id="all">Show All</button>
<button class="btn" id="a">Show A</button>
<button class="btn" id="b">Show B</button>
<button class="btn" id="c">Show C</button>
<button class="btn" id="d">Show D</button>

<div class="spacer"></div>

<div id="parent">
<div class="box a b">A &amp; B</div>
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
<div class="box d">D</div>
</div>

最佳答案

您使用的 CSS 选择器 (:nth-child(2)) 不是您所需要的,因为它基于 HTML DOM 元素。第二个元素永远不会改变 DOM 中的位置,它只是被隐藏。

我不相信有 CSS 解决方案,但有 jQuery 解决方案。

我拿了你的 Codepen 并修改了一些东西

CSS(而不是 .box:nth-child(2))

.box.no-border {
border:none;
}

JS

var $btns = $('.btn').click(function() {
if (this.id == 'all') {
$('#parent > div').fadeIn(450);
} else {
var $el = $('.' + this.id).fadeIn(450);
$('#parent > div').not($el).hide();
}
$btns.removeClass('active');
$(this).addClass('active');

$('.box').removeClass('no-border'); // reinitialize
$('.box:visible').eq(1).addClass('no-border'); // apply the class
})

请注意eq()方法是基于 0 的索引,因此 .eq(1) 将获取第二个元素。添加 :visible 只会让您获得屏幕上可见的内容。

关于javascript - 使用 JQuery 切换 div 后重新加载 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42982062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com