【问题标题】:What is the "event" parameter that so often is defined for JavaScript event handler functions?经常为 JavaScript 事件处理函数定义的“事件”参数是什么?
【发布时间】:2009-12-24 03:18:06
【问题描述】:

很多时候我看到的 jQuery 代码看起来像这样:

$('a').live( 'click', function(event){
..
});

事件参数有什么作用?它对应的是元素“a”还是事件“live”?

【问题讨论】:

    标签: javascript jquery dom javascript-events


    【解决方案1】:

    这意味着页面上的每个锚元素 (a) 以及将来任何动态添加的锚元素都将附加一个点击事件,该事件将运行任何传入的函数。

    jQuery documentation of the live method

    传入的函数的参数event是点击锚元素的结果。如果您使用 Firefox 和 Firebug,您可以通过以下方式检查此对象:

    $("a").live("click", function(event) { 
        console.dir(event);
    });
    

    当您单击锚点时,您将能够在 Firebug 控制台中看到整个对象。

    【讨论】:

    • 很抱歉配方不好。我的意思是“事件”是做什么的
    【解决方案2】:

    我想您是在专门询问 event 是什么,而不一定是 live 函数。 event 是一个 jQuery.Event (http://docs.jquery.com/Events/jQuery.Event) 对象,它包含有关事件的许多内容,包括对单击对象的引用。

    【讨论】:

      【解决方案3】:

      event 在这种情况下与 HTML 中每个 a 标记上发生的 'click' 事件相关联。它是一个对象,包含鼠标点击的所有相关属性。

      live 比仅仅绑定一个事件更有效,因为它会将自己附加到所有事件绑定完成后动态创建的任何a 标签。

      【讨论】:

        【解决方案4】:

        在 javascript(不仅仅是特定于 jQuery)中,事件对象是一个描述刚刚发生的事件的对象。 W3C DOM 标准规定事件对象是传递给事件处理程序的第一个参数。在 IE 上,事件对象是一个全局变量。所以在普通的 javascript(没有像 jQuery 这样的库)中,你经常会发现人们写这样的东西:

        div.onclick = function (event) {
          event = event || window.event; // take care of IE
          ..
        }
        

        像 jQuery 这样的大多数库都会为您解决这个问题,因此您只需要做 W3C 标准的事情。

        事件对象是找出诸如鼠标指针 xy 位置、按下哪个键等的唯一标准机制。

        见:https://developer.mozilla.org/En/DOM:event

        【讨论】:

          猜你喜欢
          • 2019-03-25
          • 2013-12-27
          • 1970-01-01
          • 2011-09-06
          • 1970-01-01
          • 1970-01-01
          • 2012-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多