Задать вопрос
@l_stl_st

Почему не работает метод .text() (jquery)?

Пытаюсь решить простую задачу - есть два блока div с одинаковым классом, и я хочу при нажатии на кнопку вывести отдельным алертом поочерёдно всех их потомков. Написал вот такое:
$('.btn').click(function(){
	var post = $('.post');
	for(i=0;i<post.length;i++){
		var current = $(post[i]);
		for(j=0;j<current.children().length;j++){
			alert(current.children()[j].text());
		}
	};
});

Конструкция current.children()[j].text() не работает. Работает без [j] (тогда она выводит j раз всех потомков сразу в одном алерте) и работает без .text() (тогда она выводит отдельно тип каждого потомка). В чём проблема?

UPD1

Алексей Уколов Переменная pb - это я когда копировал код сюда поменял на post и не заметил, так-то это post, сейчас поправлю. Спасибо за ссылку, сейчас так попробую, но всё равно интересно, почему .text() не срабатывает.

Андрей Мохов так не работает тоже

UPD2
Константин Китманов Я пробовал textContent, даже вспомнил крутой сайт youmightnotneedjquery.com и нашёл там, и всё равно с текстКонтент не работает, представляете.

UPD3
@k12th
@mokhovcom
а нет, и с текстКонтент и с .eq() работает, спасибо! Просто я бегло редактировал и вкосячил там что-то, когда пробовал.

Ого, тут комментировать, оказывается, можно ответы, а я в основной пост отвечаю. Я крутой.
  • Вопрос задан
  • 3187 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Потому что current.children()[j] -- это уже не объект jQuery, а голая нода, у нее ет метода text (есть только поле textContent).
Выяснить это можно было бы очень просто, поставив брейкпойнт и посмотрев в Watch, что есть что:)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
поправь
alert(current.children().eq(j).text());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы