【发布时间】:2009-12-24 03:18:06
【问题描述】:
很多时候我看到的 jQuery 代码看起来像这样:
$('a').live( 'click', function(event){
..
});
事件参数有什么作用?它对应的是元素“a”还是事件“live”?
【问题讨论】:
标签: javascript jquery dom javascript-events
很多时候我看到的 jQuery 代码看起来像这样:
$('a').live( 'click', function(event){
..
});
事件参数有什么作用?它对应的是元素“a”还是事件“live”?
【问题讨论】:
标签: javascript jquery dom javascript-events
这意味着页面上的每个锚元素 (a) 以及将来任何动态添加的锚元素都将附加一个点击事件,该事件将运行任何传入的函数。
jQuery documentation of the live method
传入的函数的参数event是点击锚元素的结果。如果您使用 Firefox 和 Firebug,您可以通过以下方式检查此对象:
$("a").live("click", function(event) {
console.dir(event);
});
当您单击锚点时,您将能够在 Firebug 控制台中看到整个对象。
【讨论】:
我想您是在专门询问 event 是什么,而不一定是 live 函数。 event 是一个 jQuery.Event (http://docs.jquery.com/Events/jQuery.Event) 对象,它包含有关事件的许多内容,包括对单击对象的引用。
【讨论】:
event 在这种情况下与 HTML 中每个 a 标记上发生的 'click' 事件相关联。它是一个对象,包含鼠标点击的所有相关属性。
live 比仅仅绑定一个事件更有效,因为它会将自己附加到所有事件绑定完成后动态创建的任何a 标签。
【讨论】:
在 javascript(不仅仅是特定于 jQuery)中,事件对象是一个描述刚刚发生的事件的对象。 W3C DOM 标准规定事件对象是传递给事件处理程序的第一个参数。在 IE 上,事件对象是一个全局变量。所以在普通的 javascript(没有像 jQuery 这样的库)中,你经常会发现人们写这样的东西:
div.onclick = function (event) {
event = event || window.event; // take care of IE
..
}
像 jQuery 这样的大多数库都会为您解决这个问题,因此您只需要做 W3C 标准的事情。
事件对象是找出诸如鼠标指针 xy 位置、按下哪个键等的唯一标准机制。
【讨论】: