Javascript 何时使用PreventDefault()与returnfalse?

Javascript 何时使用PreventDefault()与returnfalse?,javascript,preventdefault,Javascript,Preventdefault,首先,在JavaScript的事件模型中,您将看到 跨越一个称为事件冒泡的概念 (使事件从子对象传播) 元素转换为父元素)。为了避免 这种冒泡效应,很多开发者 使用名为stopPropagation()的事件方法。 或者,开发人员已经开始使用 返回false语句以停止此类传播。 现在,还有另一个术语叫做 preventDefault()。顾名思义,这 方法防止 要触发的元素。最好的用例是防止 锚定标记以打开链接 您可能会遇到这样一种情况,即 要防止锚定标签 打开链接(默认行为)并停止 事件从上到

首先,在JavaScript的事件模型中,您将看到 跨越一个称为事件冒泡的概念 (使事件从子对象传播) 元素转换为父元素)。为了避免 这种冒泡效应,很多开发者 使用名为
stopPropagation()
的事件方法。 或者,开发人员已经开始使用
返回false
语句以停止此类传播。 现在,还有另一个术语叫做
preventDefault()
。顾名思义,这 方法防止 要触发的元素。最好的用例是防止 锚定标记以打开链接

您可能会遇到这样一种情况,即 要防止锚定标签 打开链接(默认行为)并停止 事件从上到父级。 在这种情况下,与其写两行代码,
你可以在一条线上完成,即<代码>返回错误

返回错误


返回false在调用时执行3项独立的操作:

  • event.preventDefault()
    –它停止浏览器的默认行为
  • event.stopPropagation()
    –它防止事件传播(或“冒泡”)DOM
  • 停止回调执行并在调用时立即返回
  • 请注意,此行为不同于正常(非jQuery)事件处理程序,在正常事件处理程序中,
    returnfalse
    不会阻止事件冒泡

    preventDefault()


    preventDefault()做了一件事:它停止浏览器的默认行为

    何时使用它们?


    我们知道它们做什么,但何时使用它们?这取决于你想完成什么。使用
    preventDefault()如果要“只是”阻止默认浏览器行为。使用返回假;当您想要阻止默认浏览器行为并阻止事件传播DOM时。在大多数情况下,您将使用return false;您真正想要的是
    preventDefault()

    示例:


    让我们试着用例子来理解:

    我们将看到纯JAVASCRIPT示例

    示例1:

    
    函数executeChild(){
    警报(“点击链接”);
    }
    函数executeParent(){
    警报(“div单击”);
    }
    
    这是一个很好的主题,但需要采用问答形式。另外,关于这个主题已经有一个很好的问题和很好的答案,我在这里做了标记。这也会很有帮助:它不是重复的,它解决了“返回错误”具体说明,顶部链接dup问题中没有这种情况。我希望可以选择对这些主持人进行否决投票。@Jean-PhilippeMartin FWIW目标下的答案也涵盖了相当全面的return false。在第一个示例中,为什么父函数在子函数之前先运行?如果事件必须向上传播,它不应该首先命中子函数吗?或者事件作为堆栈的一部分向上并向下解析,导致先运行父函数,然后再运行子函数?从事件处理程序返回false不会执行事件。stopPropagation()显然从这个@keval-bhatt-1开始,
    返回false
    似乎不执行(在我尝试的FF51、Chrome 56和IE11中)你提到的那些事。请添加参考资料以支持它。这个答案不再正确:是的,5.1和5.3不再有效(这就是小提琴)。我肯定记得他们在工作,或者对此感到困惑:)