我正在学习jQuery而且我坚持Event Objects
我没有得到这四个事件对象,我已经通过jQuery文档,但我没有完美地完成它
这四个事件对象将在实际行动中发挥作用吗?
preventDefault()
isDefaultPrevented()
stopPropagation()
isPropagationStopped()
希望得到快速和积极的回应..
答案 0 :(得分:3)
preventDefault()
用于停止触发事件的默认操作。例如,如果您将自定义回调附加到链接的click
事件,那么preventDefault()
可能会阻止该页面打开(可能是为了进行AJAX调用?)。
stopPropagation()
用于阻止事件将DOM冒泡到父元素。例如,如果您有一个树状菜单,并且想要将自定义回调应用于hover
事件,而不是其父项,则可以使用此功能。
另外两个只是检查上面两个是否已经使用过。
答案 1 :(得分:3)
要添加@ Pehmolelu的答案和@ Jack's:
return false
实际上完成了preventDefault()
和stopPropagation
的工作(但只有当您使用jQuery事件时)。
要使用event
对象,必须将其传递给事件处理程序:
$("a").click(function(event) {
event.preventDefault();
event.stopPropagation();
});
使用jQuery时,下面的代码&以上是相同的:
$("a").click(function() {
//your code here
return false;
});
这个问题涉及类似的领域,应该有所帮助:event.preventDefault() vs. return false
答案 2 :(得分:2)
我不知道所有这些,但你可以使用preventDefault(),例如:
$(a).click(function(e){
e.preventDefault();
});
所以这会阻止浏览器转到href。它会阻止默认操作。在这种情况下,返回false也基本相同。
编辑:修复它以使用事件:p
答案 3 :(得分:2)
要理解这些概念,您应该了解传播的含义。文档中的元素嵌套在树中。考虑这个例子。
如果点击锚标记会怎样?让我们而不是说点击,说试图杀死锚标记。
您尝试杀死锚标记。它试图为自己辩护,并且默认情况下,它从父亲那里寻求帮助(p标签),而p又从父亲那里寻求帮助(div
标签)。现在,如果锚足够强大来防御自己并阻止你杀死它(处理你)怎么办?有没有必要求助?没有?然后如何停止该默认行为。例如,这是通过e.stopPropagation()
完成的。
现在考虑锚标签总是咬自己来保护自己。但是这一次,因为你想杀死它,它应该使用枪。如何覆盖这种咬人的默认行为?答案是e.preventDefault()
。
现在,让我们回到我们的主要故事。单击锚标记时,它的默认行为是什么?它只是跟随链接,导致您离开当前页面。但有时我们的开发人员希望锚标签的响应方式不同。换句话说,有时我们想告诉它,“嘿锚标记,我知道你总是去另一个网页,但请,这次不要那样做”。我们使用e.preventDefault()
函数实现此目的;