gpt4 book ai didi

javascript - 使用 return false 而不是 e.preventDefault() 的真实应用是什么,反之亦然?

转载 作者:搜寻专家 更新时间:2023-11-01 04:11:25 24 4
gpt4 key购买 nike

我知道,如果我返回 false,它实际上是在调用 e.preventDefault()e.stopPropagation

我的问题在于决定何时继续事件流还是完全停止事件流。我们能否列出一些我想使用 e.preventDefault() 而不是 return false 的真实情况,反之亦然,以便为我描绘更清晰的画面?

编辑:

我是一个视觉学习者, 看到 某事是如何运作的,而不是 < em>阅读关于它的内容,是我理解 为什么它起作用的方式。如果有人能为我发布代码示例,我将不胜感激。

编辑:

根据@Pointy 的回答和评论,我创建了一个可用的 jsFiddle demo对于那些视觉学习者。我认为它很好地总结了这一点。

最佳答案

您可能想在“提交”按钮的“点击”处理程序上使用“preventDefault()”,但不返回 false。为什么?因为您可能有一个按钮的“本地”处理程序,该处理程序决定是否继续提交表单。但是,可能还有其他处理程序设置了“.delegate()”或“.live()”,它们根据按钮点击做其他有趣的事情,所以我想让事件冒泡到那些。

编辑 — 非常重要的是要注意,false 返回值的约定会停止两者 传播(冒泡)和默认行为一个 jQuery 的东西,而不是原生的。

编辑更多 作为说明,请考虑以下 HTML:

<body>
<form name='foo' action='whatever'>
<!-- ... -->
<input type='submit' value='Go' id='mainSubmit'>
</form>
</body>

现在,如果我想在页面上的任何按钮点击时出现某种奇特的动画,我可能有一些代码通过“.delegate()”连接起来:

// provide entertaining animation upon button clicks
$('body').delegate('input:submit, input:button, button', 'click', function() {
$(this).performExcitingAnimation();
});

对于表单中的那个提交按钮,我可能想做表单验证来决定表单是否真的可以提交:

$('#mainSubmit').click(function(e) {
if ($(this).closest('form').valid()) return true;
$('#errorBox').text("Uh oh something is wrong");
e.preventDefault(); // ... instead of return false
});

如果该处理程序使用 return false; 而不是调用“preventDefault()”方法,那么该事件将不会冒泡到委托(delegate)的处理程序,并且用户会很遗憾地被剥夺一些令人兴奋的东西按钮动画。

关于javascript - 使用 return false 而不是 e.preventDefault() 的真实应用是什么,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com