2012-01-23 80 views
0

所以我有一個複選框字段的網格視圖。在jQuery中,我想編寫一個函數,當未選中的複選框被選中時執行某些操作。附加未勾選複選框回調更改

function clickAllSize() { 
    alert("helloy"); 
} 

$(document).ready(function() { 
    $("input :checkbox:not(checked)").change(clickAllSize()); 
}); 

問題是該函數在頁面加載時立即運行,在任何單擊之前。後續檢查/取消選中不會觸發警報。

+0

您應該刪除輸入之間的空間:複選框 –

+0

甚至更好=>'$('input [type =「checkbox」]:not(checked)')' – gdoron

+0

當DOM準備就緒時,是否有複選框已經呈現?如果沒有,你應該使用'on'功能 – gdoron

回答

0

刪除()這應該是:

$(document).ready(function() { 
    $('input[type="checkbox"]:not(checked)').change(clickAllSize); 
}); 
  1. 在更改回調,你應該給函數的名稱,而不是調用它。
  2. docs

因爲:複選框是一個jQuery擴展且不CSS規範的一部分,使用查詢:複選框不能利用由本機DOM querySelectorAll提供的性能提升的()方法。爲了在現代瀏覽器中獲得更好的性能,請改用[type =「checkbox」]。

jQuery是設計與0+所選元素的工作,所以一直在調試jQuery代碼檢查什麼是選擇長度:

var amount = $("input :checkbox:not(checked)").length; 
alert(amount); // -Probably 0... 
0

change(clickAllSize())

+0

現在它不會拋出警報 – ScottieB