event.preventDefault() 和多个事件

2023-12-31

在我开始编写大量不起作用的代码之前,我想我应该问这个问题。

event.preventDefault()仅取消点击事件的默认操作不是吗?

理论上,我应该能够将 jQuery 中的多个单击事件处理程序绑定到给定目标,以执行不同的操作,例如 Ajax 帖子和 Google 跟踪。

我错了吗?


event.preventDefault()仅取消点击事件的默认操作不是吗?

它取消浏览器对事件的默认操作(不仅仅是click事件) (W3C docs http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-Event-preventDefault, jQuery 文档 http://api.jquery.com/event.preventDefault/)。例如,在形式中submit事件,它阻止浏览器提交表单。它不会停止您在代码中所做的任何事情,也不会停止冒泡;就是这样stopPropagation是为了(W3C docs http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-Event-stopPropagation, jQuery 文档 http://api.jquery.com/event.stopPropagation/).

假设您有一个链接div,并且你有click事件同时挂在链接和div。如果链接的事件处理程序调用preventDefault,浏览器不会执行其默认操作(跟随链接),但该事件继续将 DOM 向上冒泡到链接的父元素,即div,这样您就会在您的click处理程序也在那里。您在任一处理程序中的代码中执行的任何操作都不会受到您的调用的影响preventDefault.

在下面的评论中,您询问了有关多个处理程序的问题same元素。两者都不preventDefault nor stopPropagation影响那些,他们仍然会被解雇......除非你使用stopImmediatePropagation http://api.jquery.com/event.stopImmediatePropagation/,它告诉 jQuery 停止事件(但不会阻止浏览器的默认操作)。

我可能应该说如果你回来false从你的事件处理程序中,它告诉 jQuery 阻止默认的and停止冒泡。就像打电话一样preventDefault and stopPropagation。当您的事件处理程序完全控制事件时,这是一种方便的快捷方式。

所以,给定这个 HTML:

<div id='foo'><a href='http://stackoverflow.com'>Q&amp;A</a></div>

示例1:

// Here we're preventing the default but not stopping bubbling,
// and so the browser won't follow the link, but the div will
// see the event and the alert will fire.
$("#foo").click(function() {
    alert("foo clicked");
});
$("#foo a").click(function(event) {
    event.preventDefault();
});

示例2:

// Here we're stopping propagation and not preventing the default;
// the browser will follow the link and the div will not be given
// a chance to process the event (no alert, and more to the point,
// code in the div's handler can't prevent the default)
$("#foo").click(function() {
    alert("foo clicked");
});
$("#foo a").click(function(event) {
    event.stopPropagation();
});

实施例3(你很少会看到这个):

// Here we're doing both, and so the browser doesn't follow the
// link and the div doesn't see the event (no alert).
$("#foo").click(function() {
    alert("foo clicked");
});
$("#foo a").click(function(event) {
    event.preventDefault();
    event.stopPropagation();
});

示例4:

// Shorter version of Example 3, exactly the same effect
$("#foo").click(function() {
    alert("foo clicked");
});
$("#foo a").click(function() {
    return false;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

event.preventDefault() 和多个事件 的相关文章

随机推荐

  • Java Jackson 与 MultipartFile

    好吧 首先我会解释一下我在做什么 我使用Spring 4 我必须做一个应用程序来发送一些带有一些附件的信息 PDF 并且每个文件都有一个标题 参考文献等 所以 我对对象进行了一些混合JSON with Jackson 2 3 3 所以 在放
  • 使用 Handlebar.js

    我实际上是想找到一些关于 Handlebar js 的教程 我发现了这个http javascriptplayground com blog 2012 05 javascript templated handlebars tutorial
  • 学习递归,错误信息(非默认参数跟随默认参数)python

    尝试练习学习递归 该程序旨在遍历列表并打印出所选字母的位置 我也不明白这个错误消息的含义 非默认参数遵循默认参数 不太明白为什么会出现错误或如何修复它 任何帮助总是感激 谢谢 def get position pos 0 List lett
  • 使用 .format(或 f 字符串)时如何转义字符串中的大括号 ({}) 字符?

    非工作示例 print Hello 0 format 42 期望的输出 Hello 42 你需要加倍 and gt gt gt x Hello 0 gt gt gt print x format 42 Hello 42 这是相关部分格式字符
  • 如何在 CSS 表格中使用固定宽度单元格来避免“无样式内容的闪烁”?

    我的 Web GUI 布局部分由 CSS 表驱动 这主要是因为我希望 单元格 在所有情况下都具有相同的高度 http www senktec com 2014 01 using css display table cell for colu
  • 网上有没有全面的 MIME 标头格式参考?

    我已经浏览了大约 100 个网站 但没有找到任何东西 有些只是 mime 类型值的列表 其他则是对 RFC 的引用 或者或多或少直接引用它们 RFC 是难以理解的 每个 RFC 都只揭示了大象的一小部分 是否有某个地方可以让我们全面了解整个
  • 朱莉娅的下三角矩阵

    我的列数等于行数 并且对角线等于零 我该如何构建这个矩阵 mat 1 2 3 4 1 0 NA NA NA 2 1 0 NA NA 3 2 4 0 NA 4 3 5 6 0 我试过这个 x rand 4 4 4x4 Array Float6
  • 如何在 C++ 字符串中搜索非 ASCII 字符?

    string s x1 y1 y2 z3 for auto i s begin i s end i if i 字符比较肯定是错误的 正确的方法是什么 我用的是vs2013 首先 您需要对程序如何处理 Unicode 有一些基本的了解 否则
  • pyspark 的 Python Round 函数问题

    我对 Spark 比较陌生 当我在导入 pyspark 函数后尝试使用 python 的内置 round 函数时遇到了问题 这似乎与我导入 pyspark 函数的方式有关 但我不确定有什么区别 或者为什么一种方法会导致问题而另一种方法不会
  • 在 Flask 中返回立即响应,但在新线程中完成处理

    我有一个从 10 秒开始的过程 但是在 10 秒之后 我不需要将信息返回给用户 而是将其写在 dynamoDB 上 这就是为什么我希望用户不必等待 10 秒 相反 我希望在发布请求后立即得到 成功 响应 我读了几篇文章并在this http
  • Terraform - Azure 上的静态 IP 地址

    我们需要为通过 terraform 部署在 Azure 中的虚拟机配置静态私有 IP 原因是我们需要通过 ansible 管道在 Ansible 中使用这些 我在这里找到的一个解决方案是首先创建一个具有 动态 地址的网卡 然后在 Terra
  • 将大数字类型转换为较小数字类型

    我仔细环顾四周 找不到类似的问题 所以如果之前有人问过这个问题 我深表歉意 我只是在玩弄类型和数字 我想知道是否可以保证以下行为 如果我将 2 个变量声明为 unsigned char BIT 8 0 unsigned short int
  • Rhino Mocks:Repeat.Once() 不起作用?

    谁能告诉我为什么下面的测试没有失败 Test public void uhh what var a MockRepository GenerateMock
  • 如何在帖子正文到达服务器之前更改帖子正文?

    尝试编写我的第一个小提琴脚本 如何在帖子正文到达服务器之前更改帖子正文 我的意思是 我填写表格 单击提交 然后暂停以更改我想要的内容 最后发送到服务器 我发现这个脚本可以更改响应 但我想更改请求 if oSession HostnameIs
  • 使用 PHP / CURL 通过 FTP 获取修改日期

    我似乎遇到了 CURL 与 FTP 的文档干旱 谁能告诉我如何使用 PHP CURL 获取给定文件的最后修改日期 非常感谢 试试这个 它在这里似乎工作正常 但我只在一台服务器上测试过
  • GetSafeHtmlFragment 删除所有 html 标签

    我在我的网站中使用 GetSafeHtmlFragment 我发现除了 p and a 已移除 我查了一下 发现微软没有解决这个问题 有没有替代方案或者有什么解决方案 Thanks 令人惊讶的是 微软在 4 2 1 版本中对 4 2 XSS
  • 如何将数据从 NSDictionary 绑定到 NSTableView?

    有谁知道如何使用 NSDictionary 中的绑定值填充 NSTableView 提前致谢 您需要创建一个NSDictionaryController在界面生成器中 将其绑定到您的字典 然后绑定NSTableView到 中的对象NSDic
  • 用户设置的数据库表结构

    我需要添加一个表来存储用户设置 用户将首次拥有大约 10 种不同的设置 但我确信还会有更多 您建议使用哪种可扩展的数据库表结构来存储用户设置 任何帮助将不胜感激 谢谢你 设置表列 setting id 设置代码 设置名称 设置描述 用户表列
  • Azure DevOps:为所有项目中的所有存储库设置 Git 分支权限

    有没有办法为 Azure DevOps 中的所有当前和未来存储库和项目中的所有当前和未来分支设置 强制推送 权限 目前 我们有大约 50 个项目 每个项目都有一个存储库和多个分支 在每个存储库的每个分支中设置权限将需要大量手动工作 而且容易
  • event.preventDefault() 和多个事件

    在我开始编写大量不起作用的代码之前 我想我应该问这个问题 event preventDefault 仅取消点击事件的默认操作不是吗 理论上 我应该能够将 jQuery 中的多个单击事件处理程序绑定到给定目标 以执行不同的操作 例如 Ajax