我有一個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