Второй аргумент обратного вызова .each()
в jQuery относится к стандартному Element
объекту, не объекту jQuery.Вы можете заключить элемент в $(...)
, чтобы включить использование методов jQuery:
let $elm = $(elm);
$elm.children('.input-group-addon').addClass('alert-danger');
$elm.children('.form-control').first().text('aaa bbb ccc');
$('.input-group').each(function(i, elm)
{
let $elm = $(elm);
$elm.children('.input-group-addon').addClass('alert-danger');
$elm.children('.form-control').first().text('aaa bbb ccc');
});
.alert-danger { color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="input-group">
<div class="input-group-addon">Addon</div>
<div class="input-group-addon">Addon</div>
<div class="input-group-addon">Addon</div>
<div class="form-control">Form Control</div>
<div class="form-control">Form Control</div>
<div class="form-control">Form Control</div>
</div>
Или используйте $(this)
:
let $elm = $(this);
$elm.children('.input-group-addon').addClass('alert-danger');
$elm.children('.form-control').first().text('aaa bbb ccc');
$('.input-group').each(function(){
let $elm = $(this);
$elm.children('.input-group-addon').addClass('alert-danger');
$elm.children('.form-control').first().text('aaa bbb ccc');
});
.alert-danger { color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="input-group">
<div class="input-group-addon">Addon</div>
<div class="input-group-addon">Addon</div>
<div class="input-group-addon">Addon</div>
<div class="form-control">Form Control</div>
<div class="form-control">Form Control</div>
<div class="form-control">Form Control</div>
</div>
Тем не менее, это не похоже на сценарий использования цикла, и часто лучше избегать их там, где это возможно,Вместо этого я мог бы предложить что-то вроде следующего:
$('.input-group')
.children('.input-group-addon')
.addClass('alert-danger')
.end()
.children('.form-control:first')
.text('aaa bbb ccc');
.alert-danger { color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="input-group">
<div class="input-group-addon">Addon</div>
<div class="input-group-addon">Addon</div>
<div class="input-group-addon">Addon</div>
<div class="form-control">Form Control</div>
<div class="form-control">Form Control</div>
<div class="form-control">Form Control</div>
</div>
Приведенный выше фрагмент сужает выделение до .children('.input-group-addon')
, а затем использует .end()
, чтобы вернуться кначальный выбор .input-group
.
.end()
Описание: Завершить самую последнюю операцию фильтрации в текущей цепочке и вернуть набор соответствующих элементовв прежнее состояние.