Стилизация checkbox. Введение
Эта статья будет коротенькая, но надеюсь, полезная, в ней я хочу показать, как быстро и просто реализуется стилизация checkbox с помощью jQuery. Все что нам потребуется, это обернуть checkbox span`он и div`ом, после чего скрыть сам чекбокс — этого мы добьемся с помощью css стилей. Остальное реализуем с помощью jQuery. При клики по диву, в котором будет находится наш чекбокс, мы будем проверять его атрибута checked и в зависимости от значения — true или false, будем менять изображение чекбокса, которое зададим span`у с помощью стилей. Для получения значения атрибута стоит использовать метод prop, в отличии от attr, он работает всегда, корректно отдает значение атрибутов для чекбокса.
Стилизация checkbox. Пример
Теперь приведу пример того, что мы получим в итоге:
Стилизация checkbox. Код
И самая главная часть статьи — код, начнем с верстки:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Стилизация checkbox с помощью jQuery</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<style>
.decor_checkbox span input[type="checkbox"]{
display: none;
}
.decor_checkbox{
clear: both;
height: 42px;
margin-bottom: 5px;
}
.decor_checkbox span {
display: block;
float:left;
cursor: pointer;
width: 42px;
height: 40px;
background: url("http://vk-book.ru/img/checkbox_sprite.png") no-repeat 0 0;
margin-right:10px;
}
.check_active span{
background-position: 0 -40px;
}
</style>
</head>
<body>
<div class="decor_checkbox">
<span>
<input type="checkbox" />
</span>
<label>Вариант 1</label>
</div>
<div class="decor_checkbox">
<span>
<input checked="checked" type="checkbox" />
</span>
<label>Вариант 2</label>
</div>
<div class="decor_checkbox">
<span>
<input type="checkbox" />
</span>
<label>Вариант 3</label>
</div>
</body>
</html>
И подробно прокомментированный javaScript:
// действия после полной загрузки страницы
$(document).ready(function(){
// проверяем, какие чекбоксы активны и меняем сласс для родительского дива
$('.decor_checkbox').each(function(){
var checkbox = $(this).find('input[type=checkbox]');
if(checkbox.prop("checked")) $(this).addClass("check_active");
});
// при клике по диву, делаем проверку
$('.decor_checkbox').click(function(){
var checkbox = $(this).find('input[type=checkbox]');
// если чекбокс был активен
if(checkbox.prop("checked")){
// снимаем класс с родительского дива
$(this).removeClass("check_active");
// и снимаем галочку с чекбокса
checkbox.prop("checked", false);
// если чекбокс не был активен
}else{
// добавляем класс родительскому диву
$(this).addClass("check_active");
// ставим галочку в чекбоксе
checkbox.prop("checked", true);
}
});
});
На этом все, тут можно скачать исходники.

