2013-05-13 2 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

+0

Да, если документ не готов, элементы могут еще не существовать, и, следовательно, селектор ничего не возвращает. – AaronLS

ответ

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 загружен.