.each()不循环所有元素-jQuery

时间:2018-11-08 07:51:12

标签: javascript jquery html

我创建了一个元素来承载我的所有帐户元素,如下所示:

var $account_list_j = $('#account_list');

我添加了动态元素,因此结构看起来像

<div id="account_list">
 <div class="card account-list-item">
  <input id="group_name_0" type="text" class="form-control name" name="username" placeholder="Account name" value="">
 </div>
 <div class="card account-list-item">
  <input id="group_name_0" type="text" class="form-control name" name="username" placeholder="Account name" value="">
 </div>
</div>

我尝试遍历动态元素,如果其中任何一个的值小于最小帐户名长度,则返回false。

function accounts_name_check(params) {
    var success = true;
    $account_list_j.each(function(e) {
        if($(this).find('.name').val().length < min_account_name_length && success){
            var string = 'All Accounts must have a name of at least '+min_account_name_length+ ' characters.';
            add_error_message(string);
            $(this).find('.name').addClass('is-invalid');
            success = false;
        }
        else{
            $(this).find('.name').removeClass('is-invalid');
        }
    });
    return success;
}

该函数似乎只会检查列表中的第一个元素,然后停止。第一个元素是唯一的静态元素(其他元素是使用按钮填充帐户列表div)。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

将此行var $account_list_j = $('#account_list');更改为var $account_list_j = $('.account-list-item');

您有多个帐户项目列表(account-list-item),而不是多个#account_list

答案 1 :(得分:0)

您需要var $account_list_j = $('#account_list .card');才能获得列表