@dev400

Как так сделать на чистом js?

В jquery мы по клику на элемент с каким либо классом можем получить его свойства и атрибуты через this

например так
<ul>
        <li><a href="#" class="link">Ссылка1</a></li>
        <li><a href="#" class="link">Ссылка2</a></li>
        <li><a href="#" class="link">Ссылка3</a></li>
        <li><a href="#" class="link">Ссылка4</a></li>
        <li><a href="#" class="link">Ссылка5</a></li>
    </ul>


$('.link').click(function(){

    alert($(this).text());

});


А в чистом js мы получаем массив
var links = document.getElementsByClassName('link');

У которого соответственно нет метода addEventListener().
И как быть? В цикле бегать по массиву?
for(var i = 0; i < links.length; i++) {
        links[i].addEventListener('click', function() {
            alert(this.text);
        });
    }

Не гуд так делать, я думаю
  • Вопрос задан
  • 306 просмотров
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Так jQuery именно это и делает, только элегантнее, через forEach.
Ответ написан
dmitry_luzanov
@dmitry_luzanov
Web frontend developer
Есть ещё вариант:

var parent = document; // или document.getElementByTagName('ul');
parent.addEventListener('click', function(e) {
	if (e.target.tagName === 'LI') { // или тот который вам нужен
		// тут чо-нибудь делаем
	}
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
24 янв. 2021, в 01:39
12000 руб./за проект
24 янв. 2021, в 01:30
1000000 руб./за проект
24 янв. 2021, в 00:56
40000 руб./за проект