$(document).ready(function(){
function Slider(activ){
var direction = $(':checkbox');
this.activation = function(){
activ.click(function(){
if($(this).attr('checked'))
SelectAll();
else
disabledAll();
})
}
function disabledAll(){
direction.each(function(){
$(this).removeAttr('checked');
});
}
function SelectAll(){
direction.each(function(){
$(this).attr('checked', 'checked');
});
}
var act = new Slider($('#activate_checkboxes'));
act.activation();
}
})
И имеет html теги, не будем придумывать что-то оригинально, возьмем просто некоторое кол-во checkbox'ов
<input type="checkbox" id="activate_checkboxes" name="check" />
<hr />
<form action="" method="post">
<input type="checkbox" name="check1" value="1" />
<input type="checkbox" name="check2" value="2" />
<input type="checkbox" name="check3" value="3" />
<input type="checkbox" name="check4" value="4" />
<input type="checkbox" name="check5" value="5" />
<input type="checkbox" name="check6" value="6" />
</form>
Как становится понятно, при нажатии на первый box он выделяет все остальные. В общем то код не стоит наверно комментировать, он и так тривиален. Поэтому, если у кого есть время, тестаните его, и если что - что можно такого внести к код, на ваш взгляд? Спасибо.
Спустя 32 минуты, 17 секунд (9.04.2012 - 12:51) TranceIT написал(а):
$(document).ready(function(){
$('#activate_checkboxes').click(function(){
if($(this).attr('checked')){
$("input:checkbox").attr('checked', 'checked');
} else {
$("input:checkbox").removeAttr('checked');
}
});
});
Спустя 1 час, 1 минута, 7 секунд (9.04.2012 - 13:52) glock18 написал(а):
1. Инициализация функций в конструкторе - ужасный подход. Смотрите прототипы
2. Нет разграничения контекста. Чаще нужно включить только определенную группу чекбоксов, а не все
3. использовать .attr() некорректно, поскольку атрибуты никогда не отражают действительного значения свойства в данный момент. нужно использовать .prop(). до какой-то там версии jquery в нем был костыль, который позволял такое некорректное использование. в последних версиях такой код, если не ошибаюсь, работать не будет. либо костыль до сих пор там, и все равно так делать не надо
4. почему активация не выполняется в конструкторе? должна бы, по идее
2. Нет разграничения контекста. Чаще нужно включить только определенную группу чекбоксов, а не все
3. использовать .attr() некорректно, поскольку атрибуты никогда не отражают действительного значения свойства в данный момент. нужно использовать .prop(). до какой-то там версии jquery в нем был костыль, который позволял такое некорректное использование. в последних версиях такой код, если не ошибаюсь, работать не будет. либо костыль до сих пор там, и все равно так делать не надо
4. почему активация не выполняется в конструкторе? должна бы, по идее
Спустя 2 минуты, 6 секунд (9.04.2012 - 13:54) glock18 написал(а):
Да и вообще класс для такой задачи ненужное совершенно усложнение. TranceIT предложил вариант более подходящий