在jquery中停止触发器

时间:2010-06-08 02:57:35

标签: jquery triggers

我有一个AJAX调用,每隔5秒进行一次调用,当调用“成功”时,我有一个触发器

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

但我需要做一次触发,第一次,而不是每5秒!

有人可以建议我如何停止此触发器,或者可能使用其他东西来触发此“点击”

谢谢!

4 个答案:

答案 0 :(得分:5)

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>

答案 1 :(得分:2)

在函数外部添加一个全局变量来跟踪状态

var trigger_triggered = false;

你的ajax电话中的某个地方

 success: function (msg) {
        ...
        if(trigger_triggered == false)
        {
            $('#test').trigger('click');
            trigger_triggered = true; //set it executed here
        }
        return false;
    },

答案 2 :(得分:0)

好吧,将ajax调用放在$(document).ready(function() { });中,只有在文档准备好后才会执行。

或者,当您执行ajax调用时,创建一个会话标志以表示已经执行的脚本。

我的意思是

这是你的ajax调用页面

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

得到点

答案 3 :(得分:0)

设置一个标志,告诉您之前是否已完成此触发。如果您没有调用click事件。

一旦执行了触发器,你也可以从#test中删除click事件,这样当你调用trigger('click')时就没有任何反应。

或者我错过了问题的重点?