在这个for循环中为什么不循环所有输入?
我在jquery中尝试了它的每一个工作..但我想用于循环我想念一些东西
我想为所有输入添加类而不是类.typeLimit
,并在循环中选择项
https://jsfiddle.net/6v8arLqa/
var type = 'number';
for (var i = 0; i < $('input[data-type-limit="' + type + '"]').not('.typeLimit').length; i++) {
console.log(i)
var input = $('input[data-type-limit="' + type + '"]').not('.typeLimit').eq(i);
console.log(input)
input.addClass('typeLimit');
}
<input type="text" data-type-limit="number" placeholder=":1">
<input type="text" data-type-limit="number" placeholder=":2">
<input type="text" data-type-limit="number" placeholder=":3">
<input type="text" data-type-limit="number" placeholder=":4">
<input type="text" data-type-limit="number" placeholder=":5">
<input type="text" data-type-limit="number" placeholder=":6">
<input type="text" data-type-limit="number" placeholder=":7">
<input type="text" data-type-limit="number" placeholder=":8">
<input type="text" data-type-limit="number" placeholder=":9">
<input type="text" data-type-limit="number" placeholder=":10">
测试每个
$.each($('input[data-type-limit="' + type + '"]').not('.typeLimit'), function(i, val) {
console.log(i)
var input = $(this);
input.addClass('typeLimit');
});
答案 0 :(得分:1)
因为每次进行循环,$('input[data-type-limit="' + type + '"]').not('.typeLimit')
的内容都会发生变化,因此您将跳过某些元素。为了防止出现这个问题(并且效率更高),您可以缓存结果并完成这些工作。
var $noTypeLimit = $('input[data-type-limit="' + type + '"]').not('.typeLimit');
for (var i = 0; i < $noTypeLimit.length; i++) {
var $input = $noTypeLimit.eq(i);
$input.addClass('typeLimit');
}
或者如果你正在做的就是为他们添加一个类,你可以进一步简化它。
$('input[data-type-limit="' + type + '"]')
.not('.typeLimit')
.addClass('typeLimit');