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
屬性
指向原始的事件對象。
相關文章
相關標籤/搜索