由于人们误解我的措辞,我会重写它,我想“下面的代码”忽略我在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与我的问题无关。完全不同。 –