[英]Onclick is called twice
这是代码:
<label onclick="event.stopPropagation(); alert(event.target.innerHTML);">
<button>
button
</button>
<span>
span
</span>
</label>
(和小提琴: http : //jsfiddle.net/YsYKq/1/ )
如果单击按钮,则仅警告button
,但是当跨度时 - span
和button
都被警告 - 因此onclick
函数被调用两次。
我怎么能阻止这个? 我需要onclick
才能被调用一次。
event.preventDefault();
而不是event.stopPropagation();
触发onclick
只有点击的元素上。 在jsFiddle演示。
请尝试以下代码我正在编辑您的代码并将“stopPropagation”更改为“preventDefault”。
<label onclick="event.preventDefault(); alert(event.target.innerHTML);">
<button>
button
</button>
<span>
span
</span>
</label>
@BenM的建议完美但如果你仍然想使用封闭按钮和跨度那么这里是一种方式......
<label for="notExistingId" onclick="event.stopPropagation(); alert(event.target.innerHTML);">
<button>
button
</button>
<span>
span
</span>
只需在标签中提供“for”值,并使用不存在的ID。
希望能帮助到你..
...当用户点击iscroll中的任何项目时,click事件会被触发两次...
我用标签和复选框的不同id字段解决了这个问题 - 然后测试了event.target.label标签脚本
function selectIconElement(elem,event){
if(event.target.id.indexOf('label')>0){
//do something if its label
}else{
//do something if not label
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.