防止javascript onclick on child元素

Pau*_*aul 7 html javascript onclick

好的,简单的问题:

<div onclick="javascript:manualToggle(this)">
    <span>Allowed to click</span>
    <span>Not allowed to click</span>
    <span>Allowed to click</span>
</div>
Run Code Online (Sandbox Code Playgroud)

如果不复制manualToggle到允许单击的2个跨度,如何在单击时阻止"不允许单击"跨度触发它的父div onclick事件?

rah*_*hul 17

为span添加一个id on attach onclick事件并使用它

一个jQuery示例

$("#spn2").click(function(event){
  event.stopPropagation();  
});
Run Code Online (Sandbox Code Playgroud)

event.stopPropagation():阻止事件冒泡到父元素,防止任何父处理程序被通知事件.


Daf*_*aff 7

使用库是有意义的,但没有你可以尝试这个(编辑整个页面进行测试):

<html><head></head>
<body>
<script type="text/javascript"><!--
function manualToggle(val)
{
    alert(val.id);
}

--></script>

<div id="test" onclick="manualToggle(this);">
    <span>Allowed to click</span>
    <span onclick="event.cancelBubble=true;if (event.stopPropagation) event.stopPropagation();">Not allowed to click</span>
    <span>Allowed to click</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


小智 2

您需要一个事件处理程序(在 jQuery 之类的东西中很容易做到这一点)来捕获 div 内跨度的点击,并且仅在跨度具有/不具有特定类时才触发该函数。