jQuery каждая функция возвращает один элемент

#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 я работаю с демокодом. Конечно, у Раджапрабху Аравиндасами есть лучший ответ 🙂 На этот раз я был слишком медленным для него 😉