#jquery #events #event-handling #dynamic #livequery
#jquery #Мероприятия #обработка событий #динамический #livequery
Вопрос:
Я пытаюсь привязать обработчик события click к некоторым элементам, которые создаются динамически. Но функция уже выполняется при простой загрузке страницы. Я также попробовал плагин livequery и .делегировать, у которого также была эта нежелательная привычка.
$(".pika_thumb").live("click" ,( function () {
$("#video").hide();
$(".pika_main").show();
}));
Как мне предотвратить выполнение моей функции при других событиях, кроме щелчка по указанным элементам?
Комментарии:
1. Круглые скобки вокруг функции не нужны, но не должны вызывать описанную проблему. Я бы предположил, что на вашей странице есть что-то еще, вызывающее эту проблему. Попробуйте поместить оповещение внутри этой функции click и посмотреть, отображается ли оно при загрузке.
2. У меня внутри нее было предупреждение, и оно сработало.
3. Казалось, что круглые скобки действительно вызывают выполнение функции. Мне следовало более внимательно присмотреться к коду примера.
4. Очень странно. В каком браузере вы ее тестировали? Я попробовал это в chrome, просто чтобы посмотреть, и это не сработало.
5. Я тестировал Firefox 3.6.16, Chromium 10.0.630.0 и Opera до версии 11.10.
Ответ №1:
Единственная очевидная ошибка — это скобки вокруг function() { }
определения.
Однако это не привело бы к немедленному вызову, если бы у вас также не был завершающий ()
список параметров. Завершен ли ваш фрагмент кода?
Ответ №2:
синтаксис:
$(".pika_thumb").live("click" , function () {
$("#video").hide();
$(".pika_main").show();
});
проверьте, нет ли у вас чего-либо другого, что запускает щелчок по вашему классу .pika_thumb.
Ответ №3:
Помимо скобок, мой окончательный рабочий код:
$("#gallery").delegate(".pika_thumb", "mousedown" , function () {
$(".video-js").get(0).pause();
$("#video").hide();
$(".pika_main").show();
});
Спасибо всем!