在 for 循环中选择项目

select item in for loop

本文关键字:选择 项目 循环 for      更新时间:2023-09-26

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

因为每次你通过循环时,$('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');