停止在元素上继续执行事件处理程序。
停止在元素上继续执行事件处理程序。
我正在编写一个小的jQuery扩展,以防止用户双击链接。
$.fn.preventDoubleClick = function() { return this.click(function() { var $t = $(this) , retVal = $t.data('active') // 检查内部标志 ; if (retVal || retVal === undefined) { // 如果是ON... $t.data('active', false); // 将内部标志设置为OFF setTimeout(function() { $t.data('active', true); }, 1000); // 1秒后,将内部标志设置为ON console.log("允许"); return true; } else { // 如果是OFF... console.log("阻止"); return false; } }); };
问题是,如果元素上有其他点击事件处理程序,它们仍然会触发:
$('#myLink').click(function() { console.log("点击"); }); $('#myLink').preventDoubleClick();
现在,当你双击链接时,我的日志中会出现以下内容:
allowed
clicked
blocked
clicked
所以基本上,我需要preventDoubleClick
内部的点击函数停止所有其他事件处理程序的触发。我该如何做到这一点?