如何在事件对象冒泡之前将其附加到事件对象

How to attach things to an Event object before it gets bubbled up?

本文关键字:对象 事件      更新时间:2023-09-26

我想在按钮侦听器回调中的事件对象中插入一个像 foo = 1 这样的属性,以便正文侦听器回调也能得到它:

$(function() {
    $("button").click(function(e) {
        alert("first");    
        // attach foo to e
    });
    $("body").click(function(e) {
        alert("second");
        // e has foo
    });
});

杰斯菲德尔:http://jsfiddle.net/exSKF/1/

有什么想法吗?

jQuery似乎为事件流的每个阶段构建一个新的事件包装器对象。但是,您可以通过 originalEvent 属性访问实际事件对象。

所以使用

$("button").click(function(e) {
    e.originalEvent.foo = 1;
});
$("body").click(function(e) {
    alert(e.originalEvent.foo);
});

(jsfiddle.net 演示)