我正在尝试阻止链接和项目上的多次点击,这会导致问题。
我使用jQuery将单击事件绑定到按钮(jQuery UI)和图像链接(<a><img /></a>)。
有没有办法一劳永逸地防止其他事件在点击发生后触发?
或者,我是否必须维护一个名为_isProcessing的全局变量,并为每个事件处理程序将其设置为true?
谢谢
编辑:(澄清)谢谢你的回答,我的问题不是阻止事件的冒泡,而是阻止多个并发点击。
发布于 2010-08-13 08:11:44
有多种方法可以防止并发单击来运行代码。
一种方法是在元素上执行unbind('click'),然后在准备好时再次执行.bind()。
我宁愿使用某种旗帜。它可以是一个变量,但我更愿意为该元素分配一个类,比如.processing,并在完成后将其删除。因此,您应该让处理程序检查该类是否存在,以确定应该运行的代码。
$('someElement').click(function() {
var $th = $(this);
if($th.hasClass('processing'))
return;
$th.addClass('processing');
// normal code to run
// then when done remove the class
$th.removeClass('processing');
});另一种选择是使用元素.data()来设置类似的标志,如$(this).data('processing', true);,然后在完成时将其设置为false。
发布于 2010-08-13 08:06:32
如前所述,有event.preventDefault、event.stopPropagation和return false。
$("a").click(function(e) {
e.preventDefault();
e.stopPropagation();
return false;
}发布于 2010-08-13 08:01:57
你查过preventDefault了吗?
$("a").click(function(e) {
e.preventDefault();
}您还可以尝试使用stopImmediatePropagation()或stopPropagation()
您还可以查看one()事件。
将处理程序附加到元素的事件。每个元素最多执行一次处理程序。
https://stackoverflow.com/questions/3472953
复制相似问题