【发布时间】:2011-03-28 05:53:19
【问题描述】:
如果我错了,请纠正我,但在我看来,jQuery 事件处理与 javascript 事件处理完全分开。我知道 jQuery 和 javascript 事件处理程序本身的执行顺序是未定义的,但是可以假设所有 javascript 处理程序都将在 jQuery 处理程序之前执行吗?
在example对此question的回答中给出的似乎是这种情况。
另外,在执行内联 javascript 事件处理程序方面是否有任何偏好?
为了澄清起见,我之所以问所有这些问题是因为我遇到了一个问题,即我在 <a> 元素的 onClick 事件上有一个内联事件处理程序,它调用封闭表单的 submit() 方法。就在提交表单之前,我想在表单中动态添加一些隐藏的inputs。现在我正在这样做:
var preSubmit = function preSubmit()
{
// add inputs
}
var oldSubmit = form.submit;
form.submit = function newSubmit()
{
preSubmit();
oldSubmit.call(form, arguments);
}
但我真的想知道是否有更优雅的方式,我真的需要对此进行一些澄清。
【问题讨论】:
-
" 我知道 jQuery 和 javascript 事件处理程序本身的执行顺序是未定义的" - 不,所有与 jQuery 绑定的事件处理程序都将按照它们绑定的顺序执行(当绑定到特定元素时 - 使用委托处理程序,您必须允许冒泡)因为 jQuery 为您管理它。但是 jQuery 仍然是 JavaScript,它仍然使用
addEventListener()(当浏览器有它时),所以非 jQuery 与 jQuery 处理程序的顺序将是不确定的。
标签: javascript jquery events