169 похожих чатов

Привет всем. Такой вопрос как можно отследить нажатие кнопки? Если

не знаешь какой у нее id и с таким классом кнопок много. Просто есть кнопки добавления в избранное. И у каждой кнопки может быть абсолютной любой id. Как можно получать этот id?

24 ответов

10 просмотров

Повесить глобальный слушатель клика на документ. У event.target проверять наличие класса кнопки добавления в избранное, и по условию код писать. Передавать параметр можно дата-аттрибутом Например кнопку сделать button.js-add-to-favorite[data-product-id=123]

Я так понимаю, что у кнопок один класс? Если так, повесить событие на этот класс, потом вытягивать id.

MrGart-Некрасов Автор вопроса
Roman O
Я так понимаю, что у кнопок один класс? Если так, ...

А разве не до первого нахождения работает отслеживание по классу? До первого найденного на странице?

MrGart-Некрасов Автор вопроса
Кириллл 🚀 Go Aaply
Повесить глобальный слушатель клика на документ. У...

Окей. Спасибо попробую. Просто с event вообще практически не работал. Только учусь) спасибо за совет

MrGart Некрасов
А разве не до первого нахождения работает отслежив...

Можно пройтись циклом по всем кнопкам, нужно дать им общий признак, например класс. Класс может быть одинаковым и сколько угодно раз на странице встречаться Для получения всех элементов с одним классом используй document.querySelectorAll или document.getElementsByClassName

Кириллл 🚀 Go Aaply
Можно пройтись циклом по всем кнопкам, нужно дать ...

Ага, а если на странице 20 кнопок, а нужно отслеживать клики только на 10 из них? Ты раздашь лишние классы на другие кнопки и получится немного не то.

MrGart Некрасов
А разве не до первого нахождения работает отслежив...

У тебя на странице может быть много кнопок с одним классом. Если пропишешь: $('.your-class').on('click', function(event) { ... }); у тебя будет доступен event.target, который будет содержать айди.

Egor Платонов
Ага, а если на странице 20 кнопок, а нужно отслежи...

Если товары и кнопки подгружаются динамически при скролле, например, то такой вариант буде тлучше, чем вешать сто слушателей (я почему-то подумал в первую очередь про динамическую подгрузку)

Кириллл 🚀 Go Aaply
Если товары и кнопки подгружаются динамически при ...

Лучше чем? Я же тебе говорю, ты лишние кнопки затронешь.

Egor Платонов
Лучше чем? Я же тебе говорю, ты лишние кнопки затр...

Производительностью Один слушатель с условием внутри лучше, чем 100 слушателей на разные элементы И там не кнопки будут задеваться, а целиком весь документ

Кириллл 🚀 Go Aaply
Производительностью Один слушатель с условием внут...

Я тебе говорю, если ты по всем кнопкам пройдешься в документе , то получится билиберда , другие кнопки получат классы которые должны быть не у них, а у отдельной группы кнопок.

Egor Платонов
Я тебе говорю, если ты по всем кнопкам пройдешься ...

Складывается ощущение, что мы о разных вещах говорим) и это уже к выше заданному вопросу не относится

Egor Платонов
Это относится к твоему ответу )

Ну значит ты меня не понял) я не предлагаю как-то динамически классы присваивать Я сказал, что нужно кнопкам, который отвечают за добавление в избранное, добавить единый класс, чтобы их можно было идентифицировать

Кириллл 🚀 Go Aaply
Ну значит ты меня не понял) я не предлагаю как-то ...

А я от тебя и хочу услышать, как ты поймёшь какие именно кнопки на странице отвечают за добавление в избранное? Если у них ещё нет общего признака

MrGart-Некрасов Автор вопроса
Egor Платонов
Это относится к твоему ответу )

На странице может быть ~2к кнопок. И DOM строиться с помощью vertual.node(мог ошибиться с названием)

Egor Платонов
А я от тебя и хочу услышать, как ты поймёшь какие ...

В смысле как? Глазами! Человек же сам вертску пишет. Найдет кнопку в коде, которая должна в избранное класть, и добавит класс

Кириллл 🚀 Go Aaply
...и?

По твоей логике "глазами" можно можно вручную каждой кнопке указывать класс.

Egor Платонов
По твоей логике "глазами" можно можно вручную кажд...

Если у него кнопки динамически рендерятся, то значит у нег оесть место, где лежит код одной кнопки, и достаточно в него класс добавить....

Кириллл 🚀 Go Aaply
Производительностью Один слушатель с условием внут...

И в целом непонятно про какую ты производительность говоришь, если повесить слушатель на одну кнопку, на основе которой рендерятся другие 100 кнопок, то на входе будет ровно тоже самое что если бы 100 слушателей вешал отдельно.

Egor Платонов
И в целом непонятно про какую ты производительност...

Я никому не предлагал "повесить слушатель на одну кнопку, на основе которой рендерятся другие 100 кнопок" Ты че-то своё уже выдумываешь там) если считаешь, что я не прав — предложи более оптимальный вариант

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

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта