传播时的JavaScript事件通信?

时间:2013-02-23 11:06:37

标签: javascript jquery

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

enter image description here

绿色嵌套在红色div下。

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

然而,当我点击绿色div时,我使用event Data overload

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

我可以读取价值:

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

但我希望绿色处理程序功能读取数据,但 RED DIV 处理程序读取数据

可以在绿色div上使用stop propogation进行操作,并使用trigger红色点击”包含事件数据。 - 但我不想。

所以我的问题:

有什么办法(没有全球大战请),当事件发生泡沫时,数据还会冒泡吗?

JSBIN

1 个答案:

答案 0 :(得分: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"
});