Показать сообщение отдельно
  #1 (permalink)  
Старый 24.08.2013, 01:04
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

Проблема с кликом по checkbox
Подскажите, пожалуйста, как решить проблему работы клика по чекбоксу с id='checkbox_all'.
Первый клик - все чекбоксы с class='current' помечаются (как и ожидалось), Второй клик - снимает с них галочки.
А третий и последующий клики не срабатывают. Что неправильно?

<?php header('Content-type: text/html; charset=utf-8');  ?>

<script type="text/javascript" src="jquery-1.10.2.js"></script> 
<script type="text/javascript" src="example.js"></script>        
<input type='checkbox' name='all' id='checkbox_all' /> <br /><br /><br />

<?php 
$total=3;
for ($i = 0; $i < $total; $i++) {   ?>      
 <input type='checkbox' class='current' name='<?php echo "checkBox[".$i."]" ?>' id = '<?php echo $i; ?>'  value='' /><br />
<?php } ?>


$(document).ready(function(){

 $('#checkbox_all').click(function(event) { 
//   event.preventDefault();
   $all = $(this);
   if ($all.attr('checked')) {
      $('.current').removeAttr('checked');
   } else {
      $('.current').attr('checked','checked');			
      $all.attr('checked','checked');			
   } 
 });
});


В дополнение: вставка
alert('да 0 = '+$all.attr('checked'));
показывает что
$all.attr('checked') ='checked'
, срабатывает событие по умолчанию для клика по чекбоксу. Но как с эти бороться, не придумал, хотя пытался вставить
event.preventDefault();

Вставка после else 
} else {
      $('.current').attr('checked','checked');			
 	  alert('да 0 = '+$all.attr('checked'));


Извиняюсь, еще одно дополнение. Реализация кода ниже вроде сняла проблему
$(document).ready(function(){
 $('#checkbox_all').click(function() { 
   $all = $(this);
   if ($all.attr('checked')) {
      $('.current').removeAttr('checked');
      $all.removeAttr('checked');
   } else {
      $('.current').attr('checked','checked');			
      $all.attr('checked','checked');			
   } 
 });
});

Вроде потому что работает только в IE. В Google Chrom, Opera, Mozilla не срабатывает. Подсказка все-таки желательна.

Последний раз редактировалось bartonom, 24.08.2013 в 02:15. Причина: Дополнение
Ответить с цитированием