我有一个AJAX调用,这是做每5秒这个呼叫,当呼叫“成功”我有一个触发停止触发jQuery中
success: function (msg) {
...
$('#test').trigger('click');
return false;
},
...
但我必须这样做触发只有一次,第一次,不是每5秒!
有人建议我如何制止这种触发,或者可能使用另一种东西来触发这个“点击”
谢谢!
我有一个AJAX调用,这是做每5秒这个呼叫,当呼叫“成功”我有一个触发停止触发jQuery中
success: function (msg) {
...
$('#test').trigger('click');
return false;
},
...
但我必须这样做触发只有一次,第一次,不是每5秒!
有人建议我如何制止这种触发,或者可能使用另一种东西来触发这个“点击”
谢谢!
添加一个全局变量的函数外部跟踪状态
var trigger_triggered = false;
某处在你的Ajax调用
success: function (msg) {
...
if(trigger_triggered == false)
{
$('#test').trigger('click');
trigger_triggered = true; //set it executed here
}
return false;
},
另一个选项是使用.data选项。如果($('#test')。data('triggered'))类型检查。 – 2010-06-08 03:56:12
我从来没有想到这一点,傻我..根据天气元素#测试正在更新通过ajax,那么它将不得不去实时模式 – RobertPitt 2010-06-08 03:59:02
好吧,将ajax调用放在$(document).ready(function() { });
中,它只会在文档准备就绪时执行。
或者,当您执行ajax调用时,创建一个会话标志来表示已经执行的脚本。
我的意思是
这是你的Ajax调用页面
<?
if(!isset($_SESSION['scriptflag']) or $_SESSION['scriftflag']==false) {
//Your action
$_SESSION['scriptflag'] = true;
}
?>
得到点
我可以帮你更好的,如果你发布你的整个代码,包括其运行的代码的函数的函数每5秒钟 – Starx 2010-06-08 03:07:40
设置一个标志,它告诉你,你是否这样做过触发。如果你有,那么不要致电点击事件。
您也可以在触发器执行后从#test中删除click事件,以便在您调用trigger('click')时不发生任何事情。
或者我错过了这个问题的重点?
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>
这是正确的答案。没有理由引入状态变量。 – Cruel 2013-02-01 20:01:02
我可以帮你更好的,如果你发布你的整个代码,包括运行在每隔5秒的代码 – Starx 2010-06-08 03:09:56