[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выделение всех checkbox'ов
m4a1fox
Доброго дня. Меня всегда терзал один вопрос. Есть один checkbox при клике на него, выделяются все.... Итак. Я тут поэкспериментировал, и вот что родилось (не прошу считать эксклюзивом, а то начнете ссылками сыпать :) ). В обшем, имеем такой, трудно назвать это классом, но все же...
$(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 минуты, 6 секунд (9.04.2012 - 13:54) glock18 написал(а):
Да и вообще класс для такой задачи ненужное совершенно усложнение. TranceIT предложил вариант более подходящий
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.