Это помещает обработчик a .change()
на все флажки, где атрибут name
начинается с cb
.
Когда происходит изменение, оно переходит к элемент .next()
sibling и вызывает .toggle()
, который будет отображаться / скрываться в зависимости от того, был установлен флажок или нет .
Пример использования вашего HTML: http://jsfiddle.net/fWYtv/
$('input:checkbox[name^=cb]').change(function() {
$(this).next().toggle( this.checked );
});
EDIT:
Поскольку вы заявили, что их будет более 100, было бы лучше использовать .delegate()
, поэтому у вас есть только обработчик один вместо 100.
Возьмите основной <div>
, который является контейнером для всех, и присвойте ему идентификатор, например container
, так что в итоге вы получите:
<div id='container'>
<div>
<input type='checkbox' name='cb1' />
<div ...
Затем позвоните .delegate()
и установите input
в качестве цели события.
Как это:
Пример: http://jsfiddle.net/fWYtv/1/
$('#container').delegate('input:checkbox[name^=cb]', 'change', function() {
$(this).next().toggle( this.checked );
});
Это будет намного более эффективный путь.