点击事件在label
标签执行2次,监听的是label
和input
的上层元素click
事件.label
和input
关联(for显示关联或者input在label下隐式关联), 点击label
的时候,事件冒泡一次,同时会触发关联的input
的click
事件,导致事件再次冒泡.
解决方式
- 不用label关联input
- 如果为了语义化或者用户体验必须使用label标签可以采用如下解决方式:
a 阻止默认行为
b 判断事件源对象的标签名为INPUT,如果为LABEL(必须大写)则返回
c 采用时间戳
方法一 阻止默认行为
1 | <div id="test1"> |
方法二 判断事件源对象
1 | <div id="test2"> |
方法三 采用时间戳
1 | <div id="test3"> |
方法四 不关联label和input
1 | <!-- 方法四 将label和input不关联 --> |