Відповіді:
Використовуйте, children()
і each()
ви можете додатково передати селекторchildren
$('#mydiv').children('input').each(function () {
alert(this.value); // "this" is the current element in the loop
});
Ви також можете просто скористатись безпосереднім довідником:
$('#mydiv > input').each(function () { /* ... */ });
each()
. Перевірте документи, пов’язані у відповіді вище.
Можна також повторити всі елементи в конкретному контексті, не маючи значення, наскільки вони глибоко вкладені:
$('input', $('#mydiv')).each(function () {
console.log($(this)); //log every element found to console output
});
Другий параметр $ ('# mydiv'), який передається селектору вводу jQuery ', це контекст. У цьому випадку пункт (()) повторюватиме всі вхідні елементи в контейнері #mydiv, навіть якщо вони не є прямими дітьми #mydiv.
Якщо вам потрібно переглядати дочірні елементи рекурсивно :
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"));
ПРИМІТКА. У цьому прикладі я показую обробники подій, зареєстровані об'єктом.
Це також можна зробити так:
$('input', '#div').each(function () {
console.log($(this)); //log every element found to console output
});
$('#myDiv').children().each( (index, element) => {
console.log(index); // children's index
console.log(element); // children's element
});
Це повторюється через усіх дітей та їх елементів із значенням індексу, можна отримати доступ окремо, використовуючи елемент та індекс відповідно.
Я не думаю, що вам потрібно користуватися each()
, ви можете використовувати стандарт для циклу
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
працює за замовчуванням
також debugging will be easier
$.each()
це завжди повільніше, ніж for
цикл, і це єдина відповідь, яка його використовує. Ключовим тут є використання .eq()
доступу для дійсного елемента в children
масиві, а не []
позначення дужки ( ).