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
属性
指向原始的事件对象。
 
 
 
posted @ 2019-11-18 11:31  云水边静沐暖阳丶  阅读(1024)  评论(0编辑  收藏  举报