我有一个Kinetic.Group
,里面包含一些形状和图像。我定义了一个双击删除图像的功能,这里是我的代码:
img.on("dblclick dbltap", function (e) {
if (e.which != 3) {
img.getParent().listening(false); //the parent here is the group
var r = confirm("Are you sure you want to delete this equipment?");
if (r == true) {
this.remove();
layer.draw(this);
stage.add(layer);
img.getParent().listening(true);
}
}
});
知道该组具有完全相同的删除功能(当然除了我没有调用listen()方法)。
group.on("dblclick dbltap", function (e) {
if (e.which != 3) {
var r = confirm("Do you want to delete this?\n\nWarning: You risk to lose its children.");
if (r == true) {
this.removeChildren();
this.remove();
layer.draw();
stage.add(layer);
}
}
});
当我双击图像并单击“确定”时出现问题,因此我得到两个弹出窗口:
没有.listening(false);
禁止听KineticJS中的事件?我做错了什么?
答案 0 :(得分:1)
您尝试实现的目标是事件不会通过子元素传播。在KineticJS中,您可以使用event.cancelBubble = true;
所以你可以使用:
group.on('click', function(e) {
e.cancelBubble = true;
});
请参阅HTML5 Canvas Cancel Event Bubble Propagation with KineticJS