在几乎所有的例子中,"事件" object作为参数传递:
$('a').on('click', function(event) {
event.preventDefault();
}
但是,似乎这也可以防止锚的默认行为:
$('a').on('click', function() {
event.preventDefault();
}
有人可以详细说明为什么第二个仍然有效以及有哪些缺点?
答案 0 :(得分:1)
event.preventDefault()
无论如何都有效。隐式event
代表一个DOM MouseEvent,如果你发送一个没有事件参数的console.log(event)
你会检查它,看看:
$('#my_button').on('click', function() {
console.log(event);
// 1. Press F12 or Ctrl + Shift + I and check the console
// 2. Click the button after run it
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="my_button" value="my_button" />
当您调用不带参数的事件时,您将调用对象表示的默认别名。您可以通过传递另一个别名“e”或“evt”来获取它,但是当您将其称为“事件”时,您执行相同的操作,然后执行相同的操作(因为您无论如何都将使用“事件”)。
在我看来,没有任何缺点,因为它只是“使用模式”。