Проблема с нажатием кнопки jquery

#javascript #jquery

#javascript #jquery

Вопрос:

Я столкнулся с проблемой в событии jquery click.

Моя веб-страница предполагает создание кнопки с помощью javascript и присвоение кнопке класса (назовем его A). Теперь я хочу определить нажатие этой кнопки, и я написал для этого следующий код :

 $(".A").click( функция () {

 // сделай что-нибудь

 });

К моему удивлению, это событие click никогда не вызывается.

Но когда я создаю кнопку статически на веб-странице (во время разработки), работает тот же код.

Существует ли другой подход для привязки нажатия кнопки к jquery в случае, если кнопка создается динамически?

Ответ №1:

Вам нужно использовать $.live

 $(".A").live('click', function () {

   // do something

});
  

Ответ №2:

Взгляните на live() метод jquery для автоматического подключения событий к новым элементам. Или, когда вы создаете новую кнопку, прикрепите новое событие нажатия.

 var newbutton = $('<input type="button" value="click me"/>');
somediv.append(newbutton);
newbutton.click(yourhandler);
  

Ответ №3:

Ваш обработчик событий срабатывает при загрузке страницы, прежде чем ваша кнопка появится.

Либо сбросьте обработчик событий после создания кнопки, либо используйте .live для поздней привязки:

 $(".A").live('click', function () {
   // do something
});
  

Теперь обработчик будет применяться к .A даже созданным в будущем.

Ответ №4:

вы должны использовать live-функцию jquery! В отличие от функции click, она отслеживает манипуляции dom. как вы можете себе представить, это немного медленнее, чем .click().

 $('.clickme').live('click', function() {
  // Live handler called.
});
  

Феликс

Комментарии:

1. Вы имеете в виду функцию, которую вы не использовали в своем примере кода ?!?

2. Да, это метод привязки, вы должны были скопировать этот пример из документов $(‘.clickme’).live(‘click’, функция() { // Вызывается обработчик Live. });

3. Это «немного медленнее»? Немного медленнее в чем? Они выполняют разные задания. Если вы сравните, насколько быстро этот метод выполняет X и насколько быстро другой метод выполняет X, результат будет «бесконечным», потому что другой метод не может выполнить X.