回答

收藏

event.preventDefault() 与返回 false

技术问答 技术问答 260 人阅读 | 0 人回复 | 2023-09-12

当我想在事件被触发后阻止其他事件处理程序时,我可以使用两种技术之一。我将在示例中使用 jQuery,但也适用于纯 JS:
$ k% ^/ b; ?; ~2 L! L1. event.preventDefault()
    $('a').click(function (e)      / custom handling here    e.preventDefault();code]2. return false[code]$('a').click(function ()()()()())()()()()()()()())()())())())())()())())()())()())()()()))())()())())())())())())()))())())())())())())())())()())()())()())())()())())()())())())())())()())())())()())())())())()()())()())()())()())()()()()()()()()())())())()))())())()))())())()())()))()))())())())()))()()()()()))()))()))()())()())()))()))()()())()))())))()))()))()))()))()()()))()()()())()))())())))()()()())()()))))())))))))()))))()))())))())))()())())())()))())()()()()()))())))))())))()()()()()())))))()))))))()()))))())()))))()())())())()()()()())())())()))()))))()))))())))())))()))))())))())))()()()()()()())())))custom handling here    return false;});
    4 t1 n1 y2 K5 f# S& [1 B
这两种停止事件传播的方法有什么显著区别吗?- y; B8 U/ e0 W; t. h) U2 C
对我来说,return false;它比执行方法更简单、更短、更不容易出错。使用此方法时,您必须记住正确的大小写、括号等。
9 l% n" t/ h; k' [1 g此外,在调用该方法之前,我必须在回调中定义第一个参数。也许有一些原因,我应该避免这样做并改用它preventDefault?更好的方法是什么?
: z! Y8 g  O* Z9 C2 v9 ?2 y                                                                # U$ p# h5 G' p% z3 _, a8 H; Y
    解决方案:                                                                $ C" R& X+ V) c& |, s1 ?
                                                                return false从jQuery 事件处理程序e.preventDefault中调和调用e.stopPropagation传递的jQuery.Event 对象实际上是相同的 。$ O+ F- P, F# ?2 H1 J: P. T/ a5 @% I- V
e.preventDefault()预防默认事件,e.stopPropagation()防止事件冒泡,return false两者兼而有之。请注意这种行为和普通(非 jQuery)事件处理程序不同,值得注意的是,return false不会阻止事件冒泡。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则