2013-03-21 74 views
1

我有一個jQuery的代碼在這裏:點擊禁用功能,否則功能有效?

jQuery(document).ready(function() { 
    $("td").click(function (e) { 
     var chk = $(this).closest("tr").find("input:checkbox").get(0); 

     if (e.target != chk) { 
      chk.checked = !chk.checked; 
     } 

     if ($(this).closest("tr").find("input:checkbox").is(":checked")) { 
      $(this).closest("tr").css("font-weight", "bold"); 
     } else { 
      $(this).closest("tr").css("font-weight", ""); 
     } 
    }); 
}); 

正如你可以看到我有很多的複選框並單擊任一td它的檢查和添加CSS。

它工作正常。我想要的是,我也有很多select箱子。
當我嘗試選擇一些功能的作品。
我想禁用單擊選擇框上的功能,因爲我想選擇不啓用複選框。

回答

1

你可以只檢查目標是選擇元素中選擇或任何東西,類似的選項:

$(function() { 
    $("td").on('click', function (e) { 
     if (! $(e.target).closest('select').length) { 
      var tr = $(this).closest("tr"), 
       chk = tr.find("input[type='checkbox']").get(0); 
      if (e.target != chk) { 
       chk.checked = !chk.checked; 
      } 
      if (tr.find("input[type='checkbox']").is(":checked")) { 
       tr.css("font-weight", "bold"); 
      } else { 
       tr.css("font-weight", ""); 
      } 
     } 
    }); 
}); 
+0

謝謝!!工作正常^ _ ^ – 2013-03-21 23:39:01

0

如果我理解正確的話,你要測試的鼠標點擊什麼,如果它是,那麼不要更改複選框,對嗎?

你應該可以從活動的屬性中獲得。例如:

if (!$('#' + e.target.id).hasClass('mySelectBox')){ 
    //your code... 
} 

有可能是一個更簡潔的方式,我沒有測試過,但試試這個:

if (e.target != 'select'){ 
    //your code.. 
} 

更新:呀,@adeneo說什麼!