我有一个AJAX调用,每隔5秒进行一次调用,当调用“成功”时,我有一个触发器
success: function (msg) {
...
$('#test').trigger('click');
return false;
},
...
但我需要做一次触发,第一次,而不是每5秒!
有人可以建议我如何停止此触发器,或者可能使用其他东西来触发此“点击”
谢谢!
答案 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')时就没有任何反应。
或者我错过了问题的重点?