Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > кнопка не слышит клик


Автор: Areostar 23.5.2013, 16:59
создал на стрвнице кнопку средствами Jquery .ajax()

теперь слушаю клик по ней

Код

$("#save").click(function(){
       alert("save");
});

не выходит smile  в чем проблема может быть

Автор: Arantir 23.5.2013, 17:09
Цитата(Areostar @  23.5.2013,  15:59 Найти цитируемый пост)
средствами Jquery .ajax()

Код, вещающий ивент на элемент, должен быть запущен после того, как элемент будет помещен в DOM (проще говоря, вставлен на страницу). $("#save") возвращает только те элементы, которые он нашел в момент вызова, и только на них ивент и вешается.

Глобально (независимо от того, когда именно появился элемент) вешать ивенты можно с помощью .on
Код

$(document).on("click", "#save", function(){ /*smtng*/ });
Правда в случае с id, который уникален, это странно выглядит. Не могу точно сказать, как поведет себя такой код.

Автор: Amphiluke 23.5.2013, 17:43
Цитата(Arantir @  23.5.2013,  21:09 Найти цитируемый пост)
Правда в случае с id, который уникален, это странно выглядит. Не могу точно сказать, как поведет себя такой код.

Интересно, а что странного? smile

Автор: Arantir 23.5.2013, 17:57
Цитата(Amphiluke @  23.5.2013,  16:43 Найти цитируемый пост)
Интересно, а что странного?

Ну обычно этот способ применяется для вешанья ивента на большого количество однотипных элементов. В частности, если такие элементы могут добавиться позже в неопределенный момент времени.
А в случае с уникальным id достаточно один раз повесить ивент где-то в колбэке аякса.

Автор: Amphiluke 23.5.2013, 18:12
Я думаю, делегация события — вполне нормальный способ добавления обработчиков, и не обязательно для кучи однотипных элементов. Если какой-то один элемент динамически загружается или постоянно пересоздается, намного удобнее один раз делегировать обработку события на нём какому-нибудь статическому родителю и больше не париться с постоянной переинициализацией обработчика при каждом динамическом обновлении/создании этого элемента. :)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)