javascript - 使用 jQuery 更改模式中的 div 类
问题描述
我有一个正在处理的博客布局(引导程序),但遇到了障碍。
我需要前两个 div 为 col-md-3 (NORMAL),然后是以下 2 个 div col-md-6 (WIDE),然后需要将接下来的 4 个 div 设置为 col-md-3 (NORMAL),然后接下来的 2 个 div col-md-6(WIDE) 依此类推,依此类推。
我已经尝试过 [codepen 中的这种方法] [1],它可以工作(下面的代码)但显然不是最有效的方法 - 我对 jQuery 相当陌生,所以非常感谢您提供的任何帮助!
HTML:
<div class="container">
<div class="row" id="blog">
<div>Normal</div>
<div class="">Normal</div>
<div class="">Wide</div>
<div class="">Wide</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Wide</div>
<div class="">Wide</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Wide</div>
<div class="">Wide</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Wide</div>
<div class="">Wide</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Wide</div>
<div class="">Wide</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Normal</div>
<div class="">Wide</div>
<div class="">Wide</div>
<div class="">Normal</div>
<div class="">Normal</div>
</div>
</div>
使用的 jQuery:
$("#blog div").each(function(i) {
var newClass = 'col-md-3 red';
if (i == 2) newClass = 'col-md-6 blue';
if (i == 3) newClass = 'col-md-6 blue';
if (i == 8) newClass = 'col-md-6 blue';
if (i == 9) newClass = 'col-md-6 blue';
if (i == 14) newClass = 'col-md-6 blue';
if (i == 15) newClass = 'col-md-6 blue';
if (i == 20) newClass = 'col-md-6 blue';
if (i == 21) newClass = 'col-md-6 blue';
if (i == 26) newClass = 'col-md-6 blue';
if (i == 27) newClass = 'col-md-6 blue';
if (i == 32) newClass = 'col-md-6 blue';
if (i == 33) newClass = 'col-md-6 blue';
$(this).addClass(newClass);
});
解决方案
这是一个解决方案,它遍历每个div
s 并根据其在pattern
数组中的位置选择适当的类。它并不比您已经拥有的紧凑得多,但JavaScript
它具有显着优势,即如果您更改div
s 的数量或模式本身,则不需要您手动修复。使用这种方法,您可以简单地更改pattern
数组中的项目并立即获得不同的结果。
elements = $("#blog").children();
pattern = ['col-md-3','col-md-3',
'col-md-6','col-md-6',
'col-md-3', 'col-md-3'];
pattern_val = 0;
for (var i=0;i<elements.length;i++) {
if (pattern_val < 6) {
$(elements[i]).addClass(pattern[pattern_val]);
pattern_val += 1;
}
else {
pattern_val = 0;
$(elements[i]).addClass(pattern[pattern_val]);
pattern_val += 1;
}
};
这是它的一个CodePen 示例。
推荐阅读
- sql - SQL Server:group by 以检索 0 的行
- linux - 找到新安装的应用程序“Beyond Compare”的可执行文件
- vue-component - Rails 5.1 API CORS 问题
- python - 数据框中的唯一值计数
- javascript - 反应本地存储
- json - 在 Spark 中展开 JSON 数组
- php - 总结具有多个索引的mysql json对象
- amazon-web-services - 使用 Elastic Beanstalk 应用程序启用 HTTPS 和 HTTP
- c# - 错误类未注册,dll 不可注册
- npm - 从 paralellshel 转移到 npm-run-all 包