他们俩实现的功能都一样,都是阻止默认的点击事件,那么为什么建议用 preventDefault 代替呢?
preventDefault
// 旧版写法 $('a').click(function () { return false; }); // 新版写法 $('a').click(function (e) { e.preventDefault(); });
学习是最好的投资!
通常, event.preventDefault()都会放在event handler的第一行。 这样的话, 假设在event handler中有一个JavaScript error, 那么, 放在first line的event.preventDefault()就可以阻止submit行为, console还可以report这个error.
event.preventDefault()
而, return false是放在event handler的最后一行的。 并且, 他是相当于event.preventDefault()和event.stopPropagation(), 如果我们想阻止bubbling的话, 就可以用return false.
return false
event.stopPropagation()
更重要的是, return false只能用于DOM Level 0 Event handler,在DOM Level 2 Event Handler是没用的, demo. 而, event.preventDefault()2者都兼容。
综上, 当然是推荐用event.preventDefault()啦。
return false;有两个作用,除了阻止默认行为外,还可以用来阻止冒泡。所以哪个方式更好,你自己应该明白了。
return false 等同于 e.preventDefault(); e.stopPropagation(); 的组合。
想更清楚的了解区别,看看这个在线调试:http://www.gbtags.com/gb/debug/de1361ab-0605-4c6d-a21b-8c082e3bd251.htm
通常,
event.preventDefault()
都会放在event handler的第一行。这样的话, 假设在event handler中有一个JavaScript error,
那么, 放在first line的
event.preventDefault()
就可以阻止submit行为, console还可以report这个error.而,
return false
是放在event handler的最后一行的。并且, 他是相当于
event.preventDefault()
和event.stopPropagation()
, 如果我们想阻止bubbling的话, 就可以用return false
.更重要的是,
return false
只能用于DOM Level 0 Event handler,在DOM Level 2 Event Handler是没用的, demo.而,
event.preventDefault()
2者都兼容。综上, 当然是推荐用
event.preventDefault()
啦。return false;有两个作用,除了阻止默认行为外,还可以用来阻止冒泡。所以哪个方式更好,你自己应该明白了。
return false 等同于
e.preventDefault();
e.stopPropagation();
的组合。
想更清楚的了解区别,看看这个在线调试:http://www.gbtags.com/gb/debug/de1361ab-0605-4c6d-a21b-8c082e3bd251.htm