由於人們誤解我的措辭,我會重寫它,我想「下面的代碼」忽略我在jQuery中下面評論的函數,如果它發生在最後「X」秒。 這是我的代碼。忽略函數,如果發生在x秒內
編輯::請寫參考這個例子的答案。 「劇本忽略了課堂上的變化,延遲將無法正常工作」http://www.w3schools.com/code/tryit.asp?filename=FBC4LK96GO6H
對不起,包括我自己在內的每個人都感到困惑。
由於人們誤解我的措辭,我會重寫它,我想「下面的代碼」忽略我在jQuery中下面評論的函數,如果它發生在最後「X」秒。 這是我的代碼。忽略函數,如果發生在x秒內
編輯::請寫參考這個例子的答案。 「劇本忽略了課堂上的變化,延遲將無法正常工作」http://www.w3schools.com/code/tryit.asp?filename=FBC4LK96GO6H
對不起,包括我自己在內的每個人都感到困惑。
由於作者的帖子更新而被修改。
您可以創建custon事件。通過這個函數,你將定義:所選對象上的「delayedClick」事件。
function delayedClickable(selector, delayTime){
$(document).ready(function(){
$(selector).each(function() {
var lastTimeFired = 0;
$(this).click(function(){
if(Date.now() - delayTime > lastTimeFired) {
lastTimeFired = Date.now();
$(this).trigger('delayedClick');
}
});
});
});
}
Remeber,你應該確定所選擇的元素delayTime與此事件:
var delayTime = 3 * 1000; // 3 sec delay between firing action
delayedClickable('.Img2', delayTime);
,然後只用你的事件上的元素。例如點擊事件可以以這種方式被使用:
$element.on('click', function() {
// ...
});
以及自定義delayedClick事件應該以這種方式被使用:
$element.on('delayedEvent', function() {
// ...
});
完整的示例: http://www.w3schools.com/code/tryit.asp?filename=FBC56VJ9JCA5
@更新 我發現了一些棘手的方法來繼續使用點擊功能,並使其按預期工作:
function delayedClickable(selector, delayTime){
$(document).ready(function(){
$(selector).each(function() {
var scope = this;
$(this).click(function(){
scope.style.pointerEvents = 'none';
setTimeout(function() {
scope.style.pointerEvents = 'auto';
}, delayTime);
});
});
});
}
然後
var delayTime = 3 * 1000; // 3 sec delay between firing action
delayedClickable('.Img2', delayTime);
這就是全部。
第二種方式的關鍵在於,我們在點擊時禁用元素上的任何指針事件,然後在超時後我們將這些事件恢復爲工作狀態。 https://developer.mozilla.org/en/docs/Web/CSS/pointer-events
而完整的例子: http://www.w3schools.com/code/tryit.asp?filename=FBC678H21H5F
讓我測試一下我的編碼,但是,如果添加到「if」和「else if」中,它可以很好地工作 –
也許你想包裝整個'$(「。element1」)。click(function ){...}'函數與這個如果(ofc把這個,如果裏面,進入函數) 試試這個(以前我已經包裝只切換到紅色與if,但記住,紅色是初始值,所以在我的第一個例子第二次從藍色到紅色將被延遲,我想你只想延遲從藍色到紅色,因爲有評論)。這是涵蓋每一個點擊的版本: http://codepen.io/anon/pen/LxPrGP –
嘿,我想我已經想出了我的這個問題的一部分,我知道它不是寫在原來的帖子,但這一切都作爲腳本附加到身體。添加的已添加的腳本在重複時會被忽略。如果沒有太多要問,用你給出的原始答案,你能解釋我如何將所有這些附加到身體並使其仍然有效嗎? –
可以使用setTimeout()
改變標誌變量和條件,以在事件處理程序檢查標誌
var allowClick = true,
delaySeconds = 5;
$(".element1").click(function(){
if(!allowClick){
return; // do nothing and don't proceed
}
allowClick = false;
setTimeout(function(){
allowClick = true;
}, delaySeconds * 1000);
// other element operations
})
http://www.w3schools.com/code/tryit.asp?filename=FBC4LK96GO6H它會與此工作? –
爲什麼不......你嘗試過嗎? – charlietfl
親自看看,我對jquery和所有人都比較陌生,如果你看到我遇到的問題,你會更好地理解我的想法。我試過了,但我認爲更大的問題是jQuery中的其他內容。 –
的可能的複製[什麼是最簡單的方法來調用jQuery中每5秒一個函數?](http://stackoverflow.com/questions/2170923/whats-the-easiest-way-to-call-a-function-every-5-seconds-in-jquery) –
@ FabianSchultz與我的問題無關。完全不同。 –