嵌套SVG中的事件冒泡

时间:2014-12-31 15:04:22

标签: snap.svg

当我使用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

    });
});

谢谢你把我拉直。

0 个答案:

没有答案