javascript - 然后计数类指定要更改的数量
问题描述
我有以下 JavaScript 函数,在其中我divs
用 a计算总数classname
,但并非所有都必须更改,这是用金额参数指定的。所以有 4 个类,所以每个类都计算类,然后 for 循环根据数量参数更改它们。
但这似乎不起作用,也请参阅注释掉的版本-
function changeImages(change, amount) {
var $projImg = $('.proj-img');
$.each($projImg, function(i) {
$(this).attr('src', 'src/img/' + change + 'Slide' + (i + 1) + '.png');
});
// $.each($projImg, function (j) {
// for(var i = 0; i < amount; i++){
// $(this).attr('src', 'src/img/' + change + 'Slide' + (i) + '.png');
// }
// });
}
解决方案
只需使用 jQuery 的.slice()
:
function changeImages(amount) {
const $matches = $('.foo').slice(0, amount);
$matches.addClass('bar');
}
changeImages(10);
.foo {
border-bottom: 8px solid red;
}
.bar {
border-color: cyan;
}
.foo:hover {
border-color: black;
}
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<div class="foo"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
您的 JS 代码将如下所示:
function changeImages(change, amount) {
$('img').slice(0, amount).each((i, el) => {
el.setAttribute('src', `https://place-hold.it/200x200&text=${ change }-${ i + 1 }`);
});
}
changeImages('UPDATED', 3);
body {
margin: 0;
}
img {
float: left;
max-width: 20vw;
}
<img src="https://place-hold.it/200x200&text=DEFAULT" />
<img src="https://place-hold.it/200x200&text=DEFAULT" />
<img src="https://place-hold.it/200x200&text=DEFAULT" />
<img src="https://place-hold.it/200x200&text=DEFAULT" />
<img src="https://place-hold.it/200x200&text=DEFAULT" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
此外,关于:lt()
,请记住这不是 CSS 规范的一部分,如文档中所述:
因为
:lt()
是 jQuery 扩展而不是 CSS 规范的一部分,所以使用的查询:lt()
不能利用原生 DOMquerySelectorAll()
方法提供的性能提升。为了在现代浏览器中获得更好的性能,请$("your-pure-css-selector").slice(0, index)
改用。
推荐阅读
- javascript - Microsoft Graph API Javascript SDK 承诺
- postgresql - 从 PostgreSQL 中的网络掩码字符串计算 masklen
- hashmap - 映射结构的 BPF 哈希的功能
- javascript - 用于构建拖放界面并使用线条连接元素的 Javascript 库
- java - Java 8 不能强制 TLS 来创建 sslcontext?
- bash - 特殊运算符 - 在 bash
- flutter - 当屏幕被锁定或最小化时,我需要颤振应用程序继续执行
- python - 我该怎么做才能解决 Webots 错误消息
- macos - Julia Plots.gif 不以 root 身份运行时加载错误
- python - 如何在数据框中满足条件的情况下检索列名和行名?