实际上我找不到这个问题的确切标题。但我可以形容它,以便你知道我需要什么。 说我有一个按钮#pressme,我想绑定一个点击事件处理程序。在函数处理程序内部,我将使用ajax从服务器获取一些数据,然后解析数据以更新div#状态的文本,例如:从N/A更新/未更新。由于数据总是在变化,我想添加另一个函数来将div#状态更改回N/A。 这里是我想出这个目的:jquery队列事件?
$("button#pressme").bind("click", function(){
$.ajax{(
type:"POST",
.....
success: function (xml, status) {
.....
$("div#status").text("updated");
setTimeout(function(){$("div#status").text("N/A")}, 20000);
},
error: ....
)};
});
这似乎工作,我的计划,因为该文本将在20秒后变回“N/A”。但是,我发现存在一个问题:如果用户不断点击按钮:说用户单击按钮1st将文本更改为“更新”,然后在18秒后再次单击以将文本更改为“未更新”。然后,仅在2秒后,文本将变回“N/A”,因为第一个setTimeout函数已执行。
如果我想记住上次用户点击,并且只在用户最后一次点击后20秒更新div的文本?如何轻松实现这一点?
谢谢!
不,它不起作用。似乎每次用户单击该按钮时,timerId都会重置为空。我没有把上面的代码放在$(function(){....})中,是不是timerId应该存在于这个闭包中?我现在很困惑。 – WilliamLou 2011-05-27 23:10:41
是的,你是对的 - timerId应该已经被声明在绑定函数之外了! – Alnitak 2011-05-28 00:03:32
为了使这项工作,你必须将var timeId = null移出单击函数处理程序。只是试图编辑您的帖子 – WilliamLou 2011-05-28 00:11:24