【发布时间】:2009-05-29 16:57:23
【问题描述】:
我正在尝试实现“等待 3 秒以执行此操作”<div>。
所以,我有一个<div>,其中包含一堆元素,我希望在 3 秒内无法点击(计时器或其他事件),但以某种方式捕获队列中的事件,然后在一段时间(或我选择的某些事件)过去/执行后解雇他们?
我认为这是一个类似于放置模式对话框的问题,然后在它下面没有任何可点击的东西。我这样想对吗?
【问题讨论】:
标签: javascript html queue
我正在尝试实现“等待 3 秒以执行此操作”<div>。
所以,我有一个<div>,其中包含一堆元素,我希望在 3 秒内无法点击(计时器或其他事件),但以某种方式捕获队列中的事件,然后在一段时间(或我选择的某些事件)过去/执行后解雇他们?
我认为这是一个类似于放置模式对话框的问题,然后在它下面没有任何可点击的东西。我这样想对吗?
【问题讨论】:
标签: javascript html queue
一种可能性是让 DIV 的点击处理程序在事件冒泡时响应对其子元素的点击。该处理程序将执行排队,直到延迟过去。这是一个粗略的例子(为方便起见,使用 jQuery 事件处理):
(function() {
var isReady = false, queue = [];
setTimeout(function() {
isReady = true;
processQueue()
}, 3000);
$("#mainDiv").click(function(ev) {
if (isReady) {
//code to handle the click based on which child was clicked (ev.srcElement)
} else {
queue.push(ev.srcElement);
}
});
function processQueue() {
var i, elem;
for (i = 0; elem = queue[i]; i++) {
$(elem).click(); //re-trigger the click event
}
queue.length = 0;
}
})();
【讨论】:
给 div 一个 onclick 函数,它会在前 3 秒开始,因为它只是保持一系列调用及其事件...然后在 3000 毫秒计时器完成后,运行一个更改 div 的 onclick 的函数,允许要编辑的东西,并运行事件数组。
【讨论】:
我发现另一个有用的是函数。
setTimeout("alert('hello')",1250);
因此,围绕所有元素的 onclick 方法使用第二种方法,只要您需要,该方法将存储该调用。
<div onclick=registerClick("normallyDoThis()")></div>
然后您可以在时间开始时设置一个计时器来更改 Div 并执行所有命令。可能使用 eval 命令?
setTimeout("changeTheDiv()", 3000);
function changeTheDiv()
{
/*eval() all the items in a list of onclicks youve been storing up */
/*Then go through and parse out the register() from all the onclick methods*/
}
希望对你有帮助
【讨论】: