传播时的 JavaScript 事件通信?

标签 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 上停止传播并使用 trigger 红色点击” 来完成事件数据。 - 但我不想。

所以我的问题:

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

JSBIN

最佳答案

由于事件的目标在事件冒泡时保持不变,您可以像这样将数据附加到 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"
});

关于传播时的 JavaScript 事件通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15039799/

相关文章:

javascript - 如何更改浏览器栏网址而不重新加载

javascript - 背景颜色在手机上消失

javascript - 如何判断是否支持window.confirm()?

jquery - 这个JavaScript怎么写呢?

php - 如何使用 Ajax 和 php 填充可靠的下拉列表

javascript - 如何在 Javascript 中解开链式匿名函数?

javascript - Angular 过滤对象的多个字符串

javascript - 如何在一个 google 帐户中跨多个域跟踪 Google Analytics?

javascript - jQuery 和 Rails ajax 请求和响应

javascript - 我应该采用哪种圆 Angular 方法?