我希望浏览器在执行某些操作后执行默认行为。我使用了even.preventDefault()并返回。但是“返回点击”事件没有执行默认的浏览器行为吗?
var doneStuff = false;
$('a').on('click', function(event) {
if(doneStuff){
alert('done');
doneStuff = false;
return;
}
event.preventDefault();
alert('doning stuff');
doneStuff = true;
$(this).trigger('click');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://concypt.com">Some Link</a>
最佳答案
Return正在执行默认的浏览器行为。
这里的问题是$(this).trigger('click')
。
不幸的是,这仅触发通过jQuery注册的点击事件处理程序(而不是本机js dom事件)。
因此,您只应调用本机click
方法:
var doneStuff = false;
$('a').on('click', function(event) {
if(doneStuff){
alert('done');
doneStuff = false;
return;
}
event.preventDefault();
alert('doning stuff');
doneStuff = true;
this.click();
});
看看stackblitz