当我使用snap.svg嵌套SVG并使用snap.svg Element.click()函数向其添加单击处理程序时,我无法停止点击内部元素进行冒泡并触发单击处理程序父母)。显而易见的答案,stopPropogation,不起作用,我猜这是因为snap.svg的click()函数以某种方式劫持它。
这个问题,以及看起来很好的答案,has been asked and answered here,但解决方案在答案的小提琴中不起作用,也不适合我。
我找到了一个临时解决方法,即将父Element.click()更改为Element.dblclick(),但我真的希望能够将Element.click()用于我的所有SVG。有什么想法吗?
在NICHOLAS KYRIAKIDES和IAN的回应后更新
感谢您的理智检查,因为它有助于解决问题。在Chrome和Firefox中,Fiddle仍然不适合我,但在Ian的评论之后,我尝试了Fiddle本地的代码,它确实有效。所以这让我得到了Nicholas的回应,我尝试了几种不同的方法来使用stopPropogation并让它运行起来。我的具体案例涉及重新点击点击,这导致了问题。这是子元素单击处理程序的新(工作)缩写代码,以防它可能帮助某人:
childElement.click(function(e) {
e.stopPropagation();
// initial click handling code goes here
// unbind the current click handler for the element
element.unclick();
// set the new click handler
element.click(function(e) {
e.stopPropagation();
// new click handling code goes here
});
});
谢谢你把我拉直。