我使用 on()
JQuery 函数和 preventDefault()
来防止锚点的默认操作。我不理解 off()
JQuery 函数。我能否使用 off('click')
代替:
$('.anchor').on('click', function(e) {
e.preventDefault();
});
我的意思是,我能用这个来阻止超链接的默认操作吗?
$('.anchor').off('click');
我使用 on()
JQuery 函数和 preventDefault()
来防止锚点的默认操作。我不理解 off()
JQuery 函数。我能否使用 off('click')
代替:
$('.anchor').on('click', function(e) {
e.preventDefault();
});
$('.anchor').off('click');
根据.off()
文档的说明:
.off()
方法会移除使用.on()
添加的事件处理程序。
因此,off()
仅会移除由jQuery添加的处理程序。但是默认的处理程序,例如链接或提交按钮上的处理程序,必须通过preventDefault()
来防止。
off:禁用事件处理程序,因此无法在单击时执行任何函数 preventdefault:禁用默认事件处理程序,但您可以使用自己的函数。
preventDefault()
阻止浏览器对事件行为的响应,但仍会执行JS代码。例如,在下面的示例中,.anchor
元素指向的URL将不会被传输,但JS代码仍将运行:$('.anchor').on('click',function(e){
e.preventDefault();
console.log('the browser wont redirect, but you will see this line in the console')
});
off()
会完全从元素中删除给定类型的任何事件处理程序。在这种情况下,单击时浏览器将转移到给定的URL,并且不会运行任何JS代码。$('.anchor').off('click');
off会删除之前连接到它的事件处理程序。
但它不会停止元素的默认行为。
您可以将多个事件添加到单个选择器中。
例如
$('somElem').on('click',function(){
// rest of code
})
$('somElem').on('someOtherEvent',function(){
// rest of code
})
因此,在触发someOtherEvent
之前,它将删除附加到该元素的任何其他事件。
off
禁用您添加的click
事件处理程序。on
添加新的事件处理程序,您可以在其中防止默认事件(例如,在 href 中不打开链接)。 - Pavlo Zhukov