选择for循环中的项目

时间:2016-04-20 21:10:47

标签: javascript jquery for-loop

在这个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');
  });

1 个答案:

答案 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');