使用 JavaScript 模拟 OnClick 事件
simulating onclick event with javascript
我想做的是在div中放置一个比按钮本身宽的图像按钮,当单击外部div时,我希望调用图像按钮onclick()函数。我对下面的 html 代码的期望是,当我单击按钮本身时,它应该只提醒"按钮单击"。当我单击外部div 时,它应该首先提醒"div 单击",然后"按钮单击"。问题是,当我单击div 时,它会提醒:"div 单击"然后"按钮单击",然后再次"div 单击",按顺序。当我单击按钮时,它会发出警报:"按钮
单击"然后"div单击",然后"按钮单击",然后"div单击"。我在这里找不到我错过的东西,有什么帮助吗?
<html>
<body>
<div style="width: 200px; border: 1px solid red;" onclick="alert('div clicked');(document.getElementById('addButton')).click();">
<input type="button" onclick="alert('button clicked');"
id="addButton"/>
</div>
</body>
</html>
您错过了这样一个事实,即某些事件在文档树中冒泡,触发了父元素的所有单击处理程序。若要停止它,请在事件对象上调用 stopPropagation。
<input type="button" onclick="event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);alert('button clicked');"
id="addButton"/>
(在旧的IE中没有stopPropagation,你需要设置event.cancelBubble=true)
在Internet Explorer中,你可以简单地做
myElement.click();
但是,W3标准有点复杂。以下代码应该适用于其他浏览器:
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true);
myElement.dispatchEvent(evt);
- document.createEvent
- 鼠标事件
另请参阅此问题:如何模拟对锚标记的点击?
使用 window.event.stopPropagation(); like
<div style="width: 200px; border: 1px solid red;" onclick="alert('div clicked');(document.getElementById('addButton')).click();">
<input type="button" value="X" onclick="alert('button clicked');window.event.stopPropagation();"
id="addButton"/>
</div>
你需要
避免从Javascript冒泡的事件,如下所示:
<html>
<body>
<script type="text/javascript">
function clickOnDiv(e){
alert('Div clicked.');
document.getElementById('addButton').click();
e.preventDefault();
return false;
}
function clickOnButton(e){
e.preventDefault();
// This line to prevent event bubbling
e.stopPropagation() ? e.stopPropagation() : (e.cancelBubble=true);
alert('Button clicked.');
return false;
}
</script>
<div id='maDiv' style="width: 200px; border: 1px solid red;">
<input type="button" value="Click Me !" id="addButton"/>
</div>
<script>
(function(){
document.getElementById('addButton').onclick = clickOnButton;
document.getElementById('maDiv').onclick = clickOnDiv;
})();
</script>
</body>
</html>
测试.. :)
相关文章:
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何调用“;链接_;在onclick事件上使用Javascript
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 选择onclick事件jquery
- 如何刷新列表框内容onclick或blur事件
- 执行php函数的onclick事件的其他替代方案
- 动态创建OnClick事件Javascript
- onClick事件未触发reactjs
- 使用java脚本更改onClick事件中菜单选项卡的颜色
- 如何使用OnClick事件通过参数调用来调用PHP函数
- 第二个事件[onClick]不起作用
- 复选框事件onclick不起作用
- 如何在jQuery中为通知添加事件onClick
- JS函数不响应事件onclick
- 使用事件onclick访问if语句Javascript中变量的值
- 如何在事件onclick中抓取文本
- 如何绑定id < light >与事件Onclick
- 未找到JS事件OnClick
- 如何在js/prototype中触发具有特定顺序的事件(onclick)
- 无法触发javascript事件OnClick的复选框