预防默认功能:什么是真正的效用
preventDefault function: What is the real utility?
我是jquery的新手,看到一段代码,考虑到方法的功能"preventDefault",有些奇怪。好吧,为了进行测试,我创建了一个测试页面,并在其中制作了两个带有"preventDefault"的功能。
关于同一主题,我有两个问题,希望你能回答我。
$(document).ready( function( ) {
$('a').click( function( event ) {//Func 1
event.preventDefault( );
});
$("#ok").click( function( event ) {//Func 2
event.preventDefault( );
alert("Wut");
//...
});
});
1-为什么在第二个函数中,即使我评论"event.preventDefault( );","alert( )"也会运行,而第一个函数的发生方式不一样?如果我在第一个函数中注释"event.preventDefault();",则链接不起作用!我觉得这很奇怪,因为无论方法"event.preventDefault();"是否在第二个函数中注释,"alert"的工作方式都相同。我认为即使是"警报"之后的内容也会运行。
2-此方法"event.preventDefault ();"的真正用途是什么?为什么,在第二个函数中,它似乎毫无用处。你能给我一些例子,说明什么时候可能有用吗?
谢谢!
preventDefault
的目的是防止浏览器与事件相关的默认操作。您的alert
不是浏览器的默认操作,不受影响。跟踪链接是浏览器的默认操作,因此阻止默认操作会阻止跟踪链接。
在许多情况下,preventDefault
至关重要。例如,在处理表单的submit
事件时,如果我们执行客户端表单验证并且表单无效,我们需要(直接或间接)preventDefault
;否则,浏览器将提交无效表单。
(我在上面说"直接或间接"是因为jQuery以特殊的方式处理事件处理程序的返回值:如果你返回false
,它会为你调用preventDefault
和stopPropagation
。
它阻止控件的默认操作。如果是链接,则停止跟踪链接。如果是表单提交,则会阻止提交表单。
它不与同一元素上的其他 JS 事件处理程序交互。
可能使用它的情况示例:
- 停止浏览器跟随链接,因为您已使用 Ajax 和 pushState 加载内容并更新 URL
- 阻止浏览器提交表单,因为您已测试输入的数据并发现其中有问题
.preventDefault()
函数阻止浏览器执行交互元素的正常隐式行为。如果你点击一个<a>
标签,那么除了你的JavaScript所做的任何事情之外,浏览器将尝试遵循"href"值并重新加载页面。这是函数名称引用的"默认"行为。
alert()
运行是因为.preventDefault()
与事件处理程序中的代码无关。如果要"中止"事件处理程序,只需return
即可。
请注意,jQuery 还为您提供了取消事件冒泡过程.stopPropagation()
和.stopImmediatePropagation()
。这些也不会对事件处理程序中的代码产生直接影响。
event.preventDefault()
禁用事件的默认行为。如果是链接,则重定向。它不会影响您自己的代码,在本例中为 alert() 调用。
- 杜兰达尔默认路线有效,其他什么都没有
- 是什么原因导致阻止默认让原始事件通过
- 对于IE浏览器,我需要使用什么来禁用Internet Explorer的默认下拉样式
- d3.js中日期的默认表示形式是什么
- 默认的工具提示样式是什么
- 有什么方法可以在超级测试中设置默认值吗
- “require”中的默认根目录是什么
- 2D 数组的默认排序是什么
- 什么是默认的 JavaScript 字符编码
- 让函数中的接收器默认为全局对象背后的基本原理是什么?
- 当未定义默认导出时,从“模块”导入模块是什么,为什么它与将 * 导入为模块不同
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- 预防默认功能:什么是真正的效用
- 我在 MAP 初始化时创建了一个默认标记,但标记没有显示内容?我能为它做些什么
- XMLHttpRequest 中的默认内容类型是什么
- 来自 TypeScript 模块的 JavaScript IIFE 中的默认参数的目的是什么?
- 这意味着什么,地图中的默认关键点
- 默认的主干事件是什么
- iscroll的默认行为是什么
- 什么's作为匿名函数的默认事件处理程序与函数名称之间的区别