5.4.4 阻止事件的常规行为
一些HTML元素对事件有预先编程的响应。例如,单击一个链接的时候,通常载入新的页面;单击表单的提交按钮会把表单数据发送给Web服务器处理。有时候,不希望Web浏览器进行常规的行为。例如,当提交表单的时候(submit()事件),如果填写表单的某个人遗漏了重要数据,我们可能想要阻止发送表单数据。
可以使用preventDefault()函数来阻止Web浏览器对一个事件的常规响应。这个函数实际上是事件对象的一部分(参见5.4.3节),因此,我们将在处理事件的函数中访问它。例如,假设页面有一个ID为menu的链接。这个链接实际上指向另一个menu页面(从而关闭了JavaScript的访问者将能够去到menu页面)。然而,已经添加了智能的JavaScript,因此,当访问者单击该链接时,菜单会出现在同一页面。通常,Web浏览器会根据该链接去到menu页面,因此,我们需要阻止这一默认的行为,如下所示:
$('#menu').click(function(evt){
//clever javascript goes here
evt.preventDefault();//don't follow the link
});
另一种技术是在事件函数的末尾直接返回值false。例如,下面的代码和上面的代码作用相同:
$('#menu').click(function(evt){
//clever javascript goes here
return false;//don't follow the link
});