javascript - 如何在通过 onClick() 调用的函数中 .stopPropagation()

标签 javascript jquery onclick

我有一个包含 onClick() 的按钮。

<input id="btn1" type=button onClick="myFunc('arg1', 'arg2', 'arg3')">

还有一个函数:

<script type="text/javascript">
    function myFunc(a1, a2, a3) {
        //do stuff
    }
</script>

我的按钮包含在一个 DIV 容器内,该容器有自己的 onClick() 事件。

我需要 DIV onClick() 来触发(正如它所做的那样),但当单击其中的按钮时则不需要。然后我只需要触发按钮的 onClick() 即可。

我之前已经通过使用 .bind() 将监听器事件绑定(bind)到按钮来完成此操作,该按钮会自动将 event 对象作为参数传递给监听器函数,然后使用 e.stopPropagation()。

但是,通过 HTML onClick() 调用的函数似乎没有将此事件传递给它们。

有没有办法在通过 HTML onClick() 而不是通过 .bind() 调用的函数中调用 stopProagation()?

同样,这里的最终目标是确保按钮的 onClick() 触发,但它包含的 DIV 的 onClick() 却不会。

最佳答案

尝试将事件作为第一个参数传递:

function test (e) {
    e.stopPropagation();
    console.log('click button');
}

function testDiv (e) {
    console.log('click div');
}
<div onClick="testDiv()">
    <button onClick="test(event, 'a','b','c')">button</button>
</div>

关于javascript - 如何在通过 onClick() 调用的函数中 .stopPropagation(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873358/

相关文章:

android - onSingleTapConfirmed 和 onSingleTapUp 的区别

javascript - 如何在焦点输入上显示隐藏 div

javascript - Es6 将对象键值转换为单个对象的方法

javascript - 如何创建过滤器来搜索文本,而不是 <div> 和 <img> 元素?

javascript - Socket.io - TypeError : socket. 不是一个函数

Javascript 运行循环太多

android - 更改 AJAX 的 PhoneGap/Cordova 用户代理

javascript - 检测 window.location 的变化

javascript - jQuery 位置选择器 API 位置名称字段不起作用

javascript - 使 onclick 只影响该元素,而不影响它的子元素