функция, непреднамеренно выполненная при использовании .live в jQuery

Я пытаюсь привязать обработчик события клика к некоторым элементам, которые создаются динамически. Но функция уже выполняется при простой загрузке страницы. Я также попробовал плагин livequery и .delegate, у которых тоже была эта нежелательная привычка.

$(".pika_thumb").live("click" ,( function () {
    $("#video").hide();
    $(".pika_main").show();
}));

Как предотвратить выполнение моей функции для других событий, кроме щелчка по указанным элементам?


person henning    schedule 27.04.2011    source источник
comment
Круглые скобки вокруг функции не нужны, но не должны вызывать описанную проблему. Я полагаю, что на вашей странице есть что-то еще, вызывающее эту проблему. Попробуйте разместить предупреждение внутри этой функции щелчка и посмотрите, отображается ли оно при загрузке.   -  person James Montagne    schedule 27.04.2011
comment
У меня внутри было оповещение, и я выстрелил.   -  person henning    schedule 28.04.2011
comment
Круглые скобки, казалось, фактически вызывают выполнение функции. Я должен был более внимательно изучить пример кода.   -  person henning    schedule 28.04.2011
comment
Очень странный. В каком браузере вы его тестировали? Я попробовал это в хроме, просто чтобы посмотреть, и это не сработало.   -  person James Montagne    schedule 28.04.2011
comment
Я тестировал Firefox 3.6.16, Chromium 10.0.630.0 и Opera до 11.10.   -  person henning    schedule 29.04.2011


Ответы (3)


Единственная очевидная ошибка — это скобки вокруг определения function() { }.

Однако это не приведет к немедленному вызову, если у вас также не будет списка параметров (). Ваш фрагмент кода завершен?

person Alnitak    schedule 27.04.2011

синтаксис:

$(".pika_thumb").live("click" , function () {
    $("#video").hide();
    $(".pika_main").show();
});

проверьте, нет ли у вас чего-то еще, что вызывает щелчок по вашему классу .pika_thumb.

person alexl    schedule 27.04.2011

Помимо скобок, мой окончательный рабочий код:

$("#gallery").delegate(".pika_thumb", "mousedown" , function () {
    $(".video-js").get(0).pause();
    $("#video").hide();
    $(".pika_main").show();
});

Спасибо всем!

person henning    schedule 29.04.2011