我已經看過類似的問題,但提供的答案涉及按鈕而不是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)