#javascript #jquery
#javascript #jquery
Вопрос:
HTML:
<div id='input'>
<p>hola</p>
<p>amigo</p>
</div>
Использование jquery:
$('#input').each(function() {
console.log($(this).text() 'mucho');
});
Возвращает как: hola amigo mucho.
Почему он не возвращает «hola mucho amigo mucho»?
Ответ №1:
Попробуйте настроить таргетинг на дочерние p
элементы внутри элемента, имеющего идентификатор #input
,
$('#input > p').each(function() {
console.log($(this).text() 'mucho');
});
ДЕМОНСТРАЦИЯ
Комментарии:
1. Но как я мог бы получить каждый элемент в div независимо от того, что это за элемент, div или paragraph?
2. Затем вы должны использовать этот селектор
$('#input *')
или, если вы хотите, чтобы все прямые дочерние элементы использовали$('#input').children()
3. @eatmypants Рад помочь ..!
Ответ №2:
Потому что в вашем случае :
$('#input').each(function() {
console.log($(this).text() 'mucho');
});
Вы получаете доступ к идентификатору «ввод», доступному на странице. Если есть несколько тегов #input (хотя и недопустимый CSS), то он выберет их все.
И содержимое внутри #input обрабатывается как один экземпляр, оно не прокручивается по внутренним тегам внутри тега #input .
Описание решения: вам нужно проникнуть внутрь вашего #input, а затем применить «каждый», чтобы получить их индивидуальный доступ.
$('#input p').each(function() {
console.log($(this).text() 'mucho');
});
#input p
Означает каждый p
внутренний input
тег.
Ответ №3:
Измените его на:
$('#input p').each(function() {
console.log($(this).text() 'mucho');
});
Ответ №4:
попробуйте это
$('#input p').each(function() {
console.log($(this).text() 'mucho');
});
Ответ №5:
Поскольку у вас есть только 1 #input
элемент, ваш .each()
будет выполнен только один раз.
$('p').each(function() {
console.log($(this).text() 'mucho');
});
Комментарии:
1. Что, если у него есть
p
теги в других местах, чем вinput
div?2. @YairNevet я работаю с демокодом. Конечно, у Раджапрабху Аравиндасами есть лучший ответ 🙂 На этот раз я был слишком медленным для него 😉