zoukankan      html  css  js  c++  java
  • jquery 点击tr选中checkbox,解决checkbox的默认点击事件被阻止的问题

       

    1.第一种,!$(event.target).is('input'),判断触发事件的元素是否为input。此时使用event.target,而不是this,获取事件本身,防止触发事件冒泡的问题。

     
    $("#data_table tr").on("click",function (event) {
                         if (!$(event.target).is('input'))
                         {
                             $('input:checkbox', this).prop('checked', function (i,  value) {
                                 return !value;
                             });
                         }
                     })
    注释:event.target属性的作用是获取到出发事件的元素。网上说使用event.target,在ie下可能会出现版本不兼容问题,我在ie11下进行测试,发现是可以的。所以应该是, jQuery对其封装后,避免了W3C、IE和safari浏览器不同标准的差异。若出现不兼容问题,可尝试使用如下方式。
     
      var thisEvent = window.event || event;
      var targetEvent = thisEvent.srcElement;
      if (!targetEvent) {
            targetEvent = thisEvent.target;
      }

    2.第二种,跳过checkbox所在列。本次示例是位于第一列,因此给除第一个td之外的td绑定点击选中事件。

     
      //直接使用not("td:first-child"),或者设置第一列td类为.tdcolFirst,即.not(".tdcolFirst")。效果是一致的
      
    $(".tr_check td").not("td:first-child").bind("click", function () {
                         $(this).parent().find("input:checkbox").prop('checked', function  (i, value) {
                             return !value;
                         });
                     })  

    3.event下的部分常用属性或方法:

    方法/属性
    类型
    作用
     event.preventDefault()   
        
    方法
    阻止默认的事件行为。
     event.stopPropagation()
    方法
    阻止事件的冒泡。
    event.type
    属性
    返回当前触发事件的事件类型。
     event.target
    属性
    获取执行事件【出发事件】的元素。
    event.relatedTarget
    属性
    返回当触发时,该事件所涉及到的其他dom元素。
    event.pageX/event.pageY
    属性
    获取光标相对页面的x坐标和y坐标。
    event.which
    属性
    鼠标单击事件中,获取鼠标的左、中、右键,在键盘事件中获取键盘所在按钮。1 鼠标左键 2 鼠标中键 3 鼠标右键
    event.originalEvent
    属性
    指向原始的事件对象。
     
     
     
  • 相关阅读:
    [Maven实战-许晓斌]-[第二章]-2.2基于UNIX系统安装maven
    [Maven实战-许晓斌]-[第二章]-2.1在Windows上安装maven
    【sonar-block】Use try-with-resources or close this "BufferedInputStream" in a "finally" clause.
    sonar阻断级别错误(block)简单汇总
    让子类使用父类的Logger
    集合的addAll方法--list.addAll(null)会报错--java.lang.NullPointerException
    nice
    ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded
    Ubuntu 系统修改root密码后,无需密码亦可登录
    MySQL 查找今年的数据
  • 原文地址:https://www.cnblogs.com/jerque/p/11881120.html
Copyright © 2011-2022 走看看