jquery 事件处理程序相对于(内联)javascript 事件处理程序的执行顺序

2023-12-02

如果我错了,请纠正我,但在我看来,jQuery 事件处理与 javascript 事件处理完全分开。我知道 jQuery 和 javascript 事件处理程序本身的执行顺序是未定义的,但是是否可以假设所有 javascript 处理程序都将在 jQuery 处理程序之前执行?

In the example在对此的回答中给出question情况似乎确实如此。

另外,相对于绑定事件处理程序,执行内联 javascript 事件处理程序是否有任何偏好?

为了澄清起见,我问所有这些是因为我遇到了一个问题,我有一个内联事件处理程序onClick事件的<a>调用的元素submit()封闭形式的方法。就在提交表单之前,我想动态添加一些隐藏的inputs到表格。现在我正在这样做:

        var preSubmit = function preSubmit()
        {
            // add inputs
        }

        var oldSubmit = form.submit;
        form.submit = function newSubmit()
        {
            preSubmit();
            oldSubmit.call(form, arguments);
        }


但我真的想知道是否有一种更优雅的方式,我真的需要对此进行一些澄清。


我不确定规范,但我认为事件处理程序只是按照您定义的顺序排队。内联处理程序是在 DOM 节点中定义的,因此没有其他内容可以更早进行。

最优雅的方式是这样写all以一种不引人注目的方式处理你的 JavaScript,即将它与 HTML 分开(你似乎正在混合编程风格)。不管怎样,您可以通过附加一个来拦截表单提交onsubmit处理程序的形式:

$("form").submit(function(){
    // Do stuff
    return true;
});

Update

我已经做了一些测试,当您在其他地方调用 DOM 的 Submit() 方法时,通过 jQuery 附加到表单的 onsubmit 处理程序似乎不会被触发。这是一个解决方法:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
jQuery(function($){
    $("a").each(function(i, a){
        a.onclick = function(){ // Remove previous handlers
            alert("I will no longer submit the form");
            $(this).closest("form").submit();
        };
    });
    $("form").submit(function(){
        alert("I'll take care myself, thank you");
        $("input[name=foo]").val("Another value");
        return true;
    });
});
//--></script>
</head>
<body>


<form action="" method="get">
    <input type="text" name="foo" value="Default value">
    <a href="javascript:;" onclick="document.forms[0].submit()">Submit form</a>
</form>

</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery 事件处理程序相对于(内联)javascript 事件处理程序的执行顺序 的相关文章

随机推荐

  • 散点图上的不同颜色编码和标记

    我想创建一个seaborn散点图 使用以下数据框 df pd DataFrame A 1 2 3 4 B 2 4 6 8 C y y n n D 1 1 2 2 在我的图表中A应该是x variable and B the y variab
  • Flutter 未在发布的 apk 上在真实设备中渲染 UI

    我一直在为我的应用程序编写 ui 在调试模式下构建时没问题 但是当我构建发布 apk 时 用户界面变得模糊 并且文本不显示 小部件的渲染不符合预期 并且它们的大小渲染不正确 我在不同的手机上检查过 但结果是一样的 是我的代码有问题还是flu
  • 通过排除导航和 Chrome 内容从 HTML 页面中提取纯内容/文本

    我正在爬取新闻网站 想要提取新闻标题 新闻摘要 第一段 等 我插入了 webkit 解析器代码 以树状方式轻松导航网页 为了消除导航和其他非新闻内容 我采用文章的文本版本 减去 html 标签 webkit 提供了相同的 api 然后我运行
  • Codeigniter 显示错误:未选择数据库

    我正在使用 Codeigniter DBForge 类在该数据库中创建数据库和表 这是代码 if this gt dbforge gt create database new db fields array blog id gt array
  • 对 sprintf 格式 '-Flag 的跨平台支持

    The 单一 UNIX 规范版本 2指定sprintf的格式 将行为标记为 The integer portion of the result of a decimal conversion i d u f g or G will be f
  • 通过非制表符分隔符实现非结构化 XML?

    我们有一个复杂的 XML 结构 而且非常大 gt 500 MB 该结构的XSD为 This XSD 众所周知 这是一个复杂的问题 由于大小或非制表符分隔符结构 我无法将其转换为可读性更好的演示文稿 我想通过 C 读取这个文件并搜索药物名称
  • SQL Server LAG() 函数计算行之间的差异

    我是 SQL Server 新手 对 lag 函数有一些疑问 我必须计算两个用户活动之间的平均距离 以天为单位 然后 我必须对所有用户进行分组 计算每个用户的行之间的所有日期差异 最后选择该组的平均值 Just to be clear I
  • CUDA 中的全局内存与动态全局内存分配

    我有一个 CUDA v5 5 应用程序需要使用全局内存 理想情况下 我更喜欢使用常量内存 但我已经耗尽了常量内存 溢出的内容必须放置在全局内存中 我还有一些需要偶尔写入的变量 在 GPU 上进行一些缩减操作之后 我将其放置在全局内存中 为了
  • 请求另一个域/服务器上的内容

    我正在尝试请求位于另一个域 服务器上的数据 但是当我尝试发送请求时遇到异常 var request new XMLHttpRequest request open GET http www w3schools com ajax cd cat
  • nginx proxy_pass 与socks5 代理?

    我正在尝试设置 proxy pass 同时也使用袜子5代理 我可以使用以下命令通过curl 访问我的支持服务 curl x socks5h localhost 8001 svo dev null I http abcd 1234 8000
  • 如何使用 Ruby 找到目录中最近修改的文件夹?

    如何使用 Ruby 在目录中找到最近修改的文件夹 不是文件 Dir glob a directory max by f File mtime f Dir glob a directory 返回中的所有目录名称a directory 作为字符
  • 警告消息澄清

    我在用着SNPassoc用于查找数据 SNP 和连续变量结果之间关联的 R 包 我进行了分析并得到了结果 但是 我收到警告消息 Warning in terms formula formula data data varlist has c
  • 使用 dplyr 将唯一 ID 分配给组内的不同值

    问题 我需要为具有两级分组的数据创建一个唯一的 ID 字段 在这里的示例代码中 它是Emp and Color ID 的结构需要如下 Emp 每个的唯一编号Color 重复的序列号Colors 这些值由句点分隔 示例数据 dat lt da
  • 当我使用 GZIPOutputStream 将文件发布到 servlet 时文件已损坏

    我尝试修改 BalusC优秀教程here发送 gzip 压缩文件 这是一个工作java类 import java io File import java io FileInputStream import java io FileNotFo
  • 如何在 Mercurial 队列中仅推送一个特定补丁?

    这就是我所做的 hg init hg qnew m p1 p1 patch some changes hg qrefresh hg qpop hg qnew m p2 p2 patch some changes hg qrefresh hg
  • Angular 正则表达式测试输入的 ng-pattern 验证不一致

    我对我的输入进行了 ng 模式验证 ng pattern g 这并不是每次都起作用 并表现出非常奇怪的行为 See plnkr ngMessage 仅在我输入的每两个字符上显示 但控制台正确评估正则表达式测试 我在浏览器开发工具中的 Ang
  • PHPWord 转 PDF 无法加载库

    我一整天都在努力让它发挥作用 现在我可以将文档另存为 docx 文件 但我希望能够将文档另存为 PDF 我已尝试使用 DOMPDF 和 TCPDF 但我不断收到错误 无法加载 PDF 库 我确认路径是正确的 我错过了什么吗 感谢您的帮助 r
  • 在 WPF 中加载多个图像时防止内存膨胀

    我有一个非常简单的 WPF 应用程序 用于预览任何给定文件夹中的图像 一次一张图像 您可以将其视为 Windows Image Viewer 的克隆 该应用程序有一个 PreviewKeyUp 事件 用于在按下左箭头或右箭头键时加载文件夹中
  • Jquery getJSON 无法跨站点工作

    我有一段 javascript 可以抓取 JSON 数据 当在本地执行时 一切似乎都工作正常 但是 当我尝试从其他站点访问它时 它不起作用 这是脚本 function var aT new AjaxTest aT getJson var A
  • jquery 事件处理程序相对于(内联)javascript 事件处理程序的执行顺序

    如果我错了 请纠正我 但在我看来 jQuery 事件处理与 javascript 事件处理完全分开 我知道 jQuery 和 javascript 事件处理程序本身的执行顺序是未定义的 但是是否可以假设所有 javascript 处理程序都