не знаешь какой у нее id и с таким классом кнопок много. Просто есть кнопки добавления в избранное. И у каждой кнопки может быть абсолютной любой id. Как можно получать этот id?
Повесить глобальный слушатель клика на документ. У event.target проверять наличие класса кнопки добавления в избранное, и по условию код писать. Передавать параметр можно дата-аттрибутом Например кнопку сделать button.js-add-to-favorite[data-product-id=123]
Я так понимаю, что у кнопок один класс? Если так, повесить событие на этот класс, потом вытягивать id.
А разве не до первого нахождения работает отслеживание по классу? До первого найденного на странице?
Окей. Спасибо попробую. Просто с event вообще практически не работал. Только учусь) спасибо за совет
Можно пройтись циклом по всем кнопкам, нужно дать им общий признак, например класс. Класс может быть одинаковым и сколько угодно раз на странице встречаться Для получения всех элементов с одним классом используй document.querySelectorAll или document.getElementsByClassName
Ага, а если на странице 20 кнопок, а нужно отслеживать клики только на 10 из них? Ты раздашь лишние классы на другие кнопки и получится немного не то.
У тебя на странице может быть много кнопок с одним классом. Если пропишешь: $('.your-class').on('click', function(event) { ... }); у тебя будет доступен event.target, который будет содержать айди.
Если товары и кнопки подгружаются динамически при скролле, например, то такой вариант буде тлучше, чем вешать сто слушателей (я почему-то подумал в первую очередь про динамическую подгрузку)
Лучше чем? Я же тебе говорю, ты лишние кнопки затронешь.
Производительностью Один слушатель с условием внутри лучше, чем 100 слушателей на разные элементы И там не кнопки будут задеваться, а целиком весь документ
Я тебе говорю, если ты по всем кнопкам пройдешься в документе , то получится билиберда , другие кнопки получат классы которые должны быть не у них, а у отдельной группы кнопок.
Складывается ощущение, что мы о разных вещах говорим) и это уже к выше заданному вопросу не относится
Это относится к твоему ответу )
Ну значит ты меня не понял) я не предлагаю как-то динамически классы присваивать Я сказал, что нужно кнопкам, который отвечают за добавление в избранное, добавить единый класс, чтобы их можно было идентифицировать
А я от тебя и хочу услышать, как ты поймёшь какие именно кнопки на странице отвечают за добавление в избранное? Если у них ещё нет общего признака
На странице может быть ~2к кнопок. И DOM строиться с помощью vertual.node(мог ошибиться с названием)
В смысле как? Глазами! Человек же сам вертску пишет. Найдет кнопку в коде, которая должна в избранное класть, и добавит класс
Он же только что сказал что кнопок может быть 2к
По твоей логике "глазами" можно можно вручную каждой кнопке указывать класс.
Если у него кнопки динамически рендерятся, то значит у нег оесть место, где лежит код одной кнопки, и достаточно в него класс добавить....
И в целом непонятно про какую ты производительность говоришь, если повесить слушатель на одну кнопку, на основе которой рендерятся другие 100 кнопок, то на входе будет ровно тоже самое что если бы 100 слушателей вешал отдельно.
Я никому не предлагал "повесить слушатель на одну кнопку, на основе которой рендерятся другие 100 кнопок" Ты че-то своё уже выдумываешь там) если считаешь, что я не прав — предложи более оптимальный вариант
Обсуждают сегодня