我正在写一个小的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
中的单击函数来停止触发所有其他事件处理程序。我该怎么做呢?
发布于 2009-04-14 06:30:26
多亏了Adam的链接,我才能看到我需要的函数:stopImmediatePropagation()
。
发布于 2009-04-14 06:19:38
我相信你是在找event.stopPropagation
编辑:事实证明,对于Nick的目的来说,这不是正确的选择。请参阅his answer。
https://stackoverflow.com/questions/746506
复制相似问题