我已经看过类似的问题,但提供的答案涉及按钮而不是div元素。当我点击ID为click
的div元素时,点击事件处理程序被unbind()
禁用,并将计时器设置为2秒。 2秒后,点击事件处理程序应该再次被bind()
启用。问题是点击事件处理程序似乎没有得到“反弹”。我正在将文本附加到另一个div元素,以检查单击事件处理程序是否处于活动状态。停用单击事件处理程序一段时间
这里是我的jsfiddle:
我已经看过类似的问题,但提供的答案涉及按钮而不是div元素。当我点击ID为click
的div元素时,点击事件处理程序被unbind()
禁用,并将计时器设置为2秒。 2秒后,点击事件处理程序应该再次被bind()
启用。问题是点击事件处理程序似乎没有得到“反弹”。我正在将文本附加到另一个div元素,以检查单击事件处理程序是否处于活动状态。停用单击事件处理程序一段时间
这里是我的jsfiddle:
另一种方法整个问题不在于解除绑定并重新绑定打扰,只是用一个“禁用”标志:
$(document).ready(function(){
var clickDisabled = false;
$('#click').click(function(){
if (clickDisabled)
return;
// do your real click processing here
clickDisabled = true;
setTimeout(function(){clickDisabled = false;}, 2000);
});
});
当你重新绑定功能要绑定只是所有代码的一个子集,第二次 - 绑定状态所做的只是输出,但它不包含任何第二次执行超时的代码。
此外,你会喜欢.one()
功能。
我在这里搞掂代码:http://jsfiddle.net/eQUne/6/
function bindClick() {
$('#click').one('click', function() {
$('#status').append("bound ");
setTimeout(bindClick, 2000);
});
}
$(document).ready(function(){
bindClick();
});
试试这个:
$(document).ready(function(){
$('#click').click(function(){
$('#click').unbind('click');
$('#status').append("unbound ");
setTimeout(
function(){
$('#click').bind('click',function(){
});
$('#status').append("bound ");
},
2000
);
});
});
你拼错setTimeout和你的 “绑定” 消息正在仅在点击追加。
如果我得到你正确地问什么,这应该工作:
<div id="click" >time out</div>
<div id="status"></div>
$(document).ready(function() {
$('#click').click(unbindme);
$('#status').html('bound');
function unbindme()
{
$('#click').unbind('click');
$('#status').html('unbound');
setTimeout(function(){
alert('here');
$('#status').html('bound');
$('#click').click(unbindme);
}, 2000);
}
}
我回答你的问题,但就是不杀自己:))开玩笑...您的代码是罚款只是一个错字:setTimeOut
应该setTimeout
(将O应该是O)