我在寫一個小小的jQuery擴展,它可以防止用戶雙擊鏈接。在元素上停止進一步的事件處理程序
$.fn.preventDoubleClick = function() {
return this.click(function() {
var $t = $(this)
, retVal = $t.data('active') // check the internal flag
;
if (retVal || retVal === undefined) { // if ON...
$t.data('active', false); // set the internal flag to OFF
setTimeout(function() {
$t.data('active', true);
}, 1000); // after 1 second, set the internal flag to ON
console.log("allowed");
return true;
} else { // if OFF...
console.log("blocked");
return false;
}
});
};
的問題是,如果有其他的單擊事件處理程序上的元素,他們仍然火了:
$('#myLink').click(function() {
console.log("Clicked");
});
$('#myLink').preventDoubleClick();
而現在,當你雙擊鏈接,我在日誌中得到這樣的:
允許
點擊
阻塞
點擊
所以基本上,我需要preventDoubleClick
中的點擊函數來阻止所有其他事件處理程序的觸發。我怎樣才能做到這一點?
此外,「preventDoubleClick」是一個誤導性的名字,因爲它不是被阻止 - 用戶仍然雙擊 - 你只是阻止它發射事件,我認爲... – James 2009-04-14 06:28:10