остановить триггер в jquery - PullRequest
0 голосов
/ 08 июня 2010

У меня есть вызов AJAX, который выполняет этот вызов каждые 5 секунд, и когда вызов "успешен", у меня есть триггер

 success: function (msg) {
        ...
        $('#test').trigger('click');
        return false;
    },
   ...

Но мне нужно сделать этот триггер только один раз, в первый раз, а не каждые 5 секунд!

Может кто-нибудь подсказать мне, как остановить этот триггер, или, может быть, использовать другой материал для запуска этого "клика"

Спасибо!

Ответы [ 4 ]

5 голосов
/ 08 июня 2010

jQuery имеет встроенный метод для событий, который должен запускаться только один раз: one().

$('#test').one('click', function() {
    // your regular click function
    // which you only want to run once

    // for example:
    alert('event fired');
});

$('#test').trigger('click');   // "event fired"
$('#test').trigger('click');   // <nothing>
2 голосов
/ 08 июня 2010

добавить глобальную переменную вне функции для отслеживания состояний

var trigger_triggered = false;

Где-то в вашем вызове ajax

 success: function (msg) {
        ...
        if(trigger_triggered == false)
        {
            $('#test').trigger('click');
            trigger_triggered = true; //set it executed here
        }
        return false;
    },
0 голосов
/ 08 июня 2010

Установите флаг, который говорит вам, делали ли вы этот триггер раньше. Если у вас есть, не вызывайте событие click.

Вы также можете после запуска триггера удалить событие click из #test, чтобы при вызове триггера («щелчка») ничего не происходило.

Или я упускаю суть вопроса?

0 голосов
/ 08 июня 2010

Ну, поместите вызов ajax, в $(document).ready(function() { }); он будет выполняться только после того, как ваш документ будет готов.

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

Что я имею в виду

это ваша страница вызова ajax

<?
if(!isset($_SESSION['scriptflag']) or $_SESSION['scriftflag']==false) {
             //Your action
             $_SESSION['scriptflag'] = true; 
}
?>

получить точку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...