由于人们误解了我的措辞,我会重写它,我想要"使用下面的代码"忽略我在jquery下面评论过的函数,如果它发生在最后一个" X"秒。 这是我的代码。
编辑::请参考这个例子写下答案。 "脚本忽略了课堂上的变化,延迟不会工作" http://www.w3schools.com/code/tryit.asp?filename=FBC4LK96GO6H
很抱歉让包括我在内的所有人感到困惑。
答案 0 :(得分:2)
由于作者的更新后编辑。
您可以创建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');
}
});
});
});
}
请记住,您应该通过以下方式在所选元素上定义delayTime和此事件:
var delayTime = 3 * 1000; // 3 sec delay between firing action
delayedClickable('.Img2', delayTime);
然后只在元素上使用你的事件。例如,可以以这种方式使用click事件:
$element.on('click', function () {
// ...
});
您的自定义delayedClick事件应该以这种方式使用:
$element.on('delayedEvent', function () {
// ...
});
完整示例: http://www.w3schools.com/code/tryit.asp?filename=FBC56VJ9JCA5
@UPDATE 我发现了另一种使用点击功能并使其按预期工作的棘手方法:
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
答案 1 :(得分:1)
可以使用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
})