Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JQuery клик на кнопке в div c обработчиком. (https://javascript.ru/forum/jquery/81379-jquery-klik-na-knopke-v-div-c-obrabotchikom.html)

savsoft 17.11.2020 07:39

JQuery клик на кнопке в div c обработчиком.
 
Всем привет,

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

На вордпресс сайте есть div с инфой и кнопкой. Кнопка обрабатывается средствами вордпресса. Тема позволяет использовать пользовательские jquery скрипты. На весь div сделал обработчик. При клике по всему блоку он срабатывает, но при клике непосредственно по кнопке, сначала срабатывает обработчик div, а потом кнопка. Мне нужно, чтобы при клике непосредственно по кнопке - срабатывал только стандартный обработчик кнопки, а при клике в любом месте дива, кроме кнопки - мой обработчик клика по блоку.

Толкните в нужную сторону, куда копать.

Спасибо

Update
Добавил еще свой обработчик кнопки, который только делает e.stopPropagation(); а дальше кнопка обрабатывается штатными средствами. Не знаю насколько это правильно?

рони 17.11.2020 08:01

Цитата:

Сообщение от savsoft
насколько это правильно?

правильно, это самое простое. есть ещё пара решений, перенести обработку клика по кнопке в клик по див(делегирование);

savsoft 17.11.2020 20:56

Цитата:

Сообщение от рони (Сообщение 530818)
правильно, это самое простое. есть ещё пара решений, перенести обработку клика по кнопке в клик по див(делегирование);

Спасибо

рони 17.11.2020 21:32

savsoft,
// 1
parent.click = function() {
//что-то делаем
}
children.click = function(event) {
event.stopPropagation()
}
 // 2
parent.click = function(event) {
if(event.target == children) return;
//что-то делаем
}
children.click = function() {

}
// 3
parent.click = function(event) {
if(event.target == children) {
//обработка клика по кнопке
};
else //что-то делаем
}


Часовой пояс GMT +3, время: 08:14.