**label标签内含有input元素,点击事件会触发两次**

  如果你的结构是label内写input实现点击文字时候input也有相应。并且,把事件设置在了label上,那么就会执行两次了。

//html:
<label class="first"><input type="checkbox"/>第一</label>
<br/>
<label class="second"><span>第二</span></label> //jQuery
$('.first').add('.second').off('click').on('click',function () {
if ($(this).hasClass('selected')) {
console.log(1);
$(this).removeClass('selected');
} else {
console.log(2);
$(this).addClass('selected');
}
});
//点击'first'标签,事件会触发两次,console结果为2和1
//点击'second'标签,事件触发一次,console结果为2/1
//html:
<label class="first"><input type="checkbox"/>第一</label>
<br/>
<label class="second"><span>第二</span></label> //jQuery
$('.first').add('.second').off('click').on('click',function () {
if ($(this).hasClass('selected')) {
console.log(1);
$(this).removeClass('selected');
} else {
console.log(2);
$(this).addClass('selected');
}
});
//点击'first'标签,事件会触发两次,console结果为2和1
//点击'second'标签,事件触发一次,console结果为2/1

解决方法:

1、取消事件的默认动作:event.preventDefault();

    <label class="first"><input type="checkbox"/>第一</label>
$('.first').off('click').on('click',function (event) {
event.preventDefault();
if ($(this).hasClass('selected')) {
console.log(1);
$(this).removeClass('selected');
} else {
console.log(2);
$(this).addClass('selected');
}
});
//点击'first'标签,事件触发一次,console结果为2/1
2、可以把事件绑定在input元素上。

    <label class="first"><input type="checkbox" class="input"/>第一</label>
$('.first .input').off('click').on('click',function (event) {
event.preventDefault();
if ($(this).hasClass('selected')) {
console.log(1);
$(this).removeClass('selected');
} else {
console.log(2);
$(this).addClass('selected');
}
});
//点击'first'标签,事件触发一次,console结果为2/1

最新文章

  1. mongodb
  2. Thinking in java学习笔记之String的不可变性
  3. Linux文件处理命令
  4. 笔记13:File 类的一些操作
  5. Navicat(连接) -1之常规设置
  6. (转)Python JSON序列化
  7. CSS3 照片墙
  8. PDF模板报表导出(Java+Acrobat+itext)
  9. 无法读取配置节 system.serviceModel 因为它缺少节声明的解决方法
  10. 转-Gitorious搭建步骤
  11. centos7zabbix-agen安装
  12. python内存数据库pydblite
  13. mvc view获取url参数
  14. Sprint Boot入门(1):创建第一个Spring Boot应用
  15. [转]ViewPager学习笔记(一)——懒加载
  16. 软件版本GA,RC,alpha,beta,Build 含义
  17. 网络攻防工具介绍——Metasploit
  18. 多github帐号的SSH key切换
  19. web.py学习遇到的问题
  20. 彩色图像直方图均衡(Histogram Equalization)

热门文章

  1. ASP.NET MVC案例教程(六)
  2. WebDriver实现网页自动化测试(以python为例说明,ruby用法类似)
  3. Linux基础命令---dmeg显示内核输出
  4. postgresql 表触发器
  5. linux中的strings命令
  6. Linux高效数据统计命令wc
  7. Linux退出状态码
  8. MySQL主从复制虽好,能完美解决数据库单点问题吗?
  9. 升级python2.7, 实现python2.7与python3并存
  10. js中的所有鼠标事件 键盘事件