javascript – 什么是使用return false而不是e.preventDefault()的实际应用程序,反之亦然?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 什么是使用return false而不是e.preventDefault()的实际应用程序,反之亦然?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1677字,纯文字阅读大概需要3分钟。
内容图文
我明白,如果我返回false,它实质上是调用e.preventDefault()和e.stopPropagation.
我的问题在于决定何时我想要继续事件流程而不是完全停止它.我们能否列出一些真实世界的情况,我想使用e.preventDefault()而不是返回false,反之亦然,为我绘制更清晰的图片?
编辑:
我是一个视觉学习者,看到某些东西是如何工作的,而不是阅读它,我是如何理解它为什么起作用的.对于能为我发布代码示例的人,我将非常感激.
编辑:
基于@Pointy的回答和评论,我为那些视觉学习者创建了一个jsFiddle demo工作.我认为它很好地总结了它.
解决方法:
您可能希望在“提交”按钮的“单击”处理程序上使用“preventDefault()”,但不返回false.为什么?因为您可能有一个按钮的“本地”处理程序,可以决定是否继续提交表单.但是,可能有其他处理程序设置为“.delegate()”或“.live()”,根据按钮点击执行其他有趣的事情,所以我希望允许事件冒泡到那些.
编辑 – 非常重要的是要注意,具有错误返回值的约定会阻止传播(冒泡)和默认行为是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()”方法,然后事件不会冒泡到委托的处理程序,用户将遗憾地剥夺一些令人兴奋的按钮动画.
内容总结
以上是互联网集市为您收集整理的javascript – 什么是使用return false而不是e.preventDefault()的实际应用程序,反之亦然?全部内容,希望文章能够帮你解决javascript – 什么是使用return false而不是e.preventDefault()的实际应用程序,反之亦然?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。