我使用on()
JQuery函数和preventDefault()
来防止锚定义操作。我无法理解off()
JQuery函数。我可以使用off('click')
代替:
$('.anchor').on('click', function(e) {
e.preventDefault();
});
我的意思是,我可以使用它来防止锚的默认动作吗?
$('.anchor').off('click');
答案 0 :(得分:2)
不,根据.off()
的文档:
的事件处理程序
.off()
方法会删除附加了.on()
。
所以off()
只删除jQuery添加的处理程序。但默认处理程序,例如在preventDefault()
上必须阻止在链接或提交按钮上。
答案 1 :(得分:1)
off:禁用eventHandler,因此单击时不能执行任何功能 preventdefault:禁用默认的eventHandler,但你可以使用自己的函数。
答案 2 :(得分:1)
他们在逻辑上非常不同。
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');
答案 3 :(得分:0)
off将删除之前附加到其上的事件处理程序。
但它不会停止元素的默认行为
您可以向单个选择器添加多个事件。
例如
$('somElem').on('click',function(){
// rest of code
})
$('somElem').on('someOtherEvent',function(){
// rest of code
})
因此,在someOtherEvent
被触发之前,它将删除附加到该元素的任何其他事件。