jQuery .trigger ('click') внутри функции интервала? - PullRequest
2 голосов
/ 18 февраля 2011

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

ПРОБЛЕМА -> trigger('click') выполняется, но событие не срабатывает, когда внутри зацикливается (пересекается) функция

$(document.ready(function(){
    var checkForConfirmation = function(){
        clearInterval(checkInterval);
        $("#anchorLink").trigger('click');
    }
    var checkInterval = setInterval(function(){checkForConfirmation()}, 5000);
});

Функция вызывается с интервалами. Когда правильный ответ получен, интервал останавливается, и имитирует щелчок по ссылке привязки.

В html-файле есть якорная ссылка <a id="anchorLink" href="#hiddenDiv">Show</a>.
Это указывает на скрытый div, который имеет некоторый контент. Я использую плагин Fancybox, чтобы показать скрытый div при нажатии на ссылку привязки.

Если я нажму на ссылку Show, вы увидите fancybox, как и ожидалось. Если я получаю ответ от серверной части, код выполняется должным образом, но fancybox не отображается.
Если я переместу $("#anchorLink").trigger('click'); за пределы функции checkForConfirmation, появится fancybox.
Когда я заменяю $("#anchorLink").trigger('click'); на $("#anchorLink").text('Im clicked');, строка отображается в теге <a id="ancoredLink">.

Это резюме, я пробовал в разных ситуациях.
Проблема, очевидно, заключается в запуске события click в циклическом режиме. Селектор $("#anchorLink") доступен, он запускает его корректно отовсюду. Очевидно, что существует проблема при запуске события мыши внутри циклической функции.

Есть предложения?

1 Ответ

3 голосов
/ 18 февраля 2011

Попробуйте:

$(document).ready(function(){
  // ...
});

вместо:

$(document.ready(function(){
  // ...
});
...