#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.