我在写一个小小的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