我正在尝试实现一个“等待3秒来执行此操作”的<div>
。
所以,我有一个<div>
,里面有一堆元素,我希望这些元素在3秒内不可点击(计时器或其他事件),但不知何故捕获队列中的事件,然后在该时间段(或我选择的事件)过去/执行后触发它们?
我认为这是一个问题,就像放置一个模式对话框,然后在它下面没有任何可点击的东西。我这样想对吗?
发布于 2009-06-13 23:27:44
一种可能是让DIV的click处理程序在事件出现时响应其子元素上的点击。该处理程序将执行排队,直到延迟过去。下面是一个粗略的例子(为了方便起见,使用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;
}
})();
发布于 2009-05-29 17:01:18
给div一个onclick函数,在你的3000毫秒定时器结束后的前3秒,它只用events...then保存一个调用数组,运行一个函数来改变div的onclick,允许编辑事物,并运行事件数组。
发布于 2009-05-29 18:05:19
我发现的另一个有用的东西是函数。
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*/
}
我希望这能帮到你
https://stackoverflow.com/questions/927058
复制相似问题