我有2个DIV的简单标记。一个在另一个内部
绿色嵌套在红色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红色点击”包含事件数据。 - 但我不想。
所以我的问题:
有什么办法(没有全球大战请),当事件发生泡沫时,数据还会冒泡吗?
答案 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"
});