jQuery .click () на элементе внутри карусели - PullRequest
1 голос
/ 23 февраля 2012

У меня есть элемент внутри карусели и привязано событие .click () к нему. И все работает отлично, потому что этот элемент находится на первой странице карусели и виден прямо при загрузке.

Но если я переместлю карусель так, чтобы она стала невидимой, а затем переместился обратно в область просмотра, событие click () больше не работает?

Мне, наверное, просто нужно как-то снова зарегистрировать его, когда он виден?

BTW Click используется для открытия модального диалогового окна jQuery UI

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Я предлагаю использовать плагин liveQuery

Это автоматически связывает события с элементами при их создании. Например:

$(".some_appearing_button").livequery('click',function () {

        alert("You clicked me!");
});

Это позволяет вам сначала установить обработчики событий и иметь возможность создавать элементы позже, как это делает ваш карусель.

0 голосов
/ 23 февраля 2012

После вашего комментария я действительно заметил, что щелчок больше не работал, когда вы проходили по карусели.

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

Подход к решению этой проблемы заключается в использовании делегирования события.
По сути, вы делегируете выполнение нажатия на .quickQoute к контейнеру, в вашем случае элемент карусели #inner:

$('#inner').on('click', '.quickQoute', function () {
    $("#quickQoute").dialog({ closeText: ' ' });
    $("#quickQoute").dialog("open");
    return false;
});

Подробнее о делегировании событий с помощью .on ()

...