2013-05-13 28 views
0

下面的代碼工作jQuery的如何使用變量

$(function() { 
    $('.bigDiv input:checkbox').click(function() { 
     alert('working'); 
    }); 
}); 

但是這一次不工作

var checkboxes = $('.bigDiv input:checkbox'); 
$(function() { 
    checkboxes.click(function() { 
     alert('working'); 
    }); 
}); 
+2

因此,您應該將'var checkboxes = $('。bigDiv input:checkbox');'移至文檔就緒處理程序。 – undefined 2013-05-13 05:06:14

+0

是的,如果文檔沒有準備好,那麼元素可能還不存在,因此選擇器什麼都不返回。 – AaronLS 2013-05-13 05:08:37

回答

3

有機會,你必須把這個行:

var checkboxes = $('.bigDiv input:checkbox'); 

$(function() {塊內部,以便在運行上一行代碼之前準備好文檔。如果文檔沒有完成加載,那麼將不會有任何複選框可供查找。 $(function() { /* code here */});的要點是在回調函數中運行代碼之前等待文檔完成加載。

你應該能夠做到這一點是這樣的:

$(function() { 
    var checkboxes = $('.bigDiv input:checkbox'); 
    checkboxes.click(function() { 
     alert('working'); 
    }); 
}); 

或者交替,你可以只是把這個代碼的腳本標記在身體的末端,甚至不需要準備處理程序:

var checkboxes = $('.bigDiv input:checkbox'); 
checkboxes.click(function() { 
    alert('working'); 
}); 
1

這可能是因爲你的代碼在<head>或至少在你的複選框被創建之前。下面的代碼:

$(function() { 
}); 

是短期的

$(document).ready(function() { 
}); 

哪些附加功能被解僱時,DOM是隨時可以使用(即複選框被加載)。您應該在文檔就緒函數中包含所有初始化內容,因爲您可以確定DOM已加載。