2

我有 2 个 DIV 的简单标记。一内一

在此处输入图像描述

绿色嵌套在红色 div 下。

两者都有不同 onclick的处理程序,当我单击绿色时,事件会冒泡到红色 div 并触发它onclick。(应该是这样)。

但是,当我单击绿色 div 时,我使用事件数据重载

$(".divGreen").on('click',{ name: "Karl"}, function (e)
                        {
                              alert('inner');
                        });

我可以读取值:

  $(".divGreen").on('click',{ name: "Karl"}, function (e)
                            {
                               //e.data.name....
                            });

但我不想让绿色处理函数读取数据,而是让RED DIV处理函数读取数据

可以stop propogation在绿色 div 上执行此操作,并对事件数据使用“触发红色点击”。- 但我不想。

所以我的问题:

有没有办法(请不要全局变量)当事件冒泡时,数据也会冒泡?

JSBIN

4

1 回答 1

2

由于事件的目标与事件冒泡相同,因此您可以e.target.data像这样附加数据:

$(".divGreen").on('click',{ name: "Karl"}, function (e) {
    e.target.data = e.data;
});

然后,您可以在父事件中选择它:

$(".divRed").on('click', function (e) {
    alert(e.target.data.name); // alerts "Karl"
});
于 2013-02-23T11:20:24.060 回答