单击同时触发两个onclick事件

时间:2014-06-06 13:53:47

标签: javascript html css onclick

我有一个跨越div的跨度。 div有一个onclick事件,span也有一个onclick事件。如果我单击跨度,我只想触发span-onclick事件,不幸的是,触发了div的onclick和跨度之一。如何解决这个问题?

        <div class="listRow" onclick="document.location = 'index.php?c=rooms&a=displayForm&roomID=3&returnTo=%2FschoolTool%2Findex.php%3Fc%3Drooms%26a%3DshowList';">
            <span class="tools listCell">
                <span class="tool" onclick="if(confirm('Vil du virkelig slette dette rommet?')) { document.location = 'index.php?c=rooms&a=delete&roomID=3'; }">
                    Slett
                </span>
            </span>
        </div>

2 个答案:

答案 0 :(得分:1)

stopPropagation()方法停止将事件冒泡到父元素,从而阻止任何父处理程序被通知事件。

您可以使用event.isPropagationStopped()方法来了解是否曾调用此方法(在该事件对象上)。

<强>语法:

event.stopPropagation() 

更多详情: -

https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation

答案 1 :(得分:1)

您正在寻找的答案很简单,但我会给您更广泛的建议。

首先,您应该将您的Javascript与HTML分开。内联Javascript通常被认为是错误的,see here for example

将Javascript移动到单独的文件后,只需将方法放在变量中,然后从onclick处理程序中调用它们。我做了simple fiddle to demonstrate this

现在,您正在寻找的实际答案是stopPropagation()方法。这会在事件对象上调用,以阻止它冒泡DOM并再次处理。这是基本答案,通常会弹出stopImmediatePropagation()preventDefault()上的主题。所以我建议阅读相关的jquery文档并查看this blog post我写的:)

希望这有助于回答您的问题并使您成为更好的开发人员!干杯!