У меня есть div, и в нем есть несколько элементов ввода... Я хотел бы перебирать каждый из этих элементов. Идеи?
Как выполнить итерацию дочерних элементов div с помощью jQuery?
Ответ 1
Используйте children()
и each()
, вы можете опционально передать селектор в children
$('#mydiv').children('input').each(function () {
alert(this.value); // "this" is the current element in the loop
});
Вы также можете использовать непосредственный дочерний селектор:
$('#mydiv > input').each(function () { /* ... */ });
Ответ 2
Также возможно выполнять итерацию по всем элементам в определенном контексте, без малейших глубин:
$('input', $('#mydiv')).each(function () {
console.log($(this)); //log every element found to console output
});
Второй параметр $('# mydiv'), который передается в jQuery 'input' Selector, является контекстом. В этом случае предложение each() будет перебирать все входные элементы в контейнере #mydiv, даже если они не являются прямыми дочерними элементами #mydiv.
Ответ 3
Если вам нужно циклически перебирать дочерние элементы:
function recursiveEach($element){
$element.children().each(function () {
var $currentElement = $(this);
//////////// Show element
console.info($currentElement);
//////////// Show events handlers of current element
console.info($currentElement.data('events'));
//////////// Loop her children
recursiveEach($currentElement);
});
}
//////////// Parent div
recursiveEach($("#div"));
Примечание:В этом примере я показываю обработчики событий, зарегистрированные с помощью объекта.
Ответ 4
Это можно сделать так же.
$('input', '#div').each(function () {
console.log($(this)); //log every element found to console output
});
Ответ 5
children() сам по себе является циклом.
$('.element').children().animate({
'opacity':'0'
});
Ответ 6
Я не думаю, что вам нужно использовать each()
, вы можете использовать стандартный цикл for
var children = $element.children().not(".pb-sortable-placeholder");
for (var i = 0; i < children.length; i++) {
var currentChild = children.eq(i);
// whatever logic you want
var oldPosition = currentChild.data("position");
}
таким образом, вы можете иметь стандартные функции цикла, такие как break
и continue
работы по умолчанию
Кроме того, отладка будет проще