кастомизация чекбоксов
Нужно сделать чекбоксы "красивыми".
На лейбл, в которых лежат чекбоксы, прикрепляется класс "checkbox-checked" в котором картинка с отмеченным чекбоксом. Так на лейбле на бекграунде стоит картинка пустого чекбокса. вторая цепочка методов не работает как надо, если нажать на чекбокс, то класс "checkbox-checked" снимается со всемх чекбоксов, и присвается тому чекбоксу, на который был произведен клик. если чекбокс уже был отмечен, то класс снимается и с него тоже. $(window).load(function() { //проверяет при загрузке страницы, отмечен чекбокс или нет и на отмеченные чекбоксы вешает класс. $('input[type="checkbox"]').each(function () { if ($(this).prop('checked')) { $(this).parent().addClass('checkbox-checked'); } }); //по клику лейблу присваивается или удаляется класс, в зависимости от того, что в атрибуте "checked". $('input[type="checkbox"]').bind("change", function(){ if ($(this).is(":checked")) { $(this).parent('label').addClass('checkbox-checked'); } else { $(this).parent('label').removeClass('checkbox-checked'); } }); как я понимаю, проблема во всплытии событий, но уверенности нет. подскажите, в чем проблема, как ее можно устранить? как найти по ней инфу? заранее за помощь большая благодарность. |
ogurchik,
html минимальный где? |
<label class="checkbox-checked"><input type="checkbox" checked="true"/>один</label> <label><input type="checkbox"/>два</label> <label><input type="checkbox"/>три</label> <label class="checkbox-checked"><input type="checkbox" checked="true"/>четыре</label> |
ogurchik,
видимо вы что-то не договаривате ... всё ок в 1 посте пропущена строка 18 <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .checkbox-checked { background: #FFCC00; } </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(window).load(function() { //проверяет при загрузке страницы, отмечен чекбокс или нет и на отмеченные чекбоксы вешает класс. $('input[type="checkbox"]').each(function () { if ($(this).prop('checked')) { $(this).parent().addClass('checkbox-checked'); } }); //по клику лейблу присваивается или удаляется класс, в зависимости от того, что в атрибуте "checked". $('input[type="checkbox"]').bind("change", function(){ if ($(this).is(":checked")) { $(this).parent('label').addClass('checkbox-checked'); } else { $(this).parent('label').removeClass('checkbox-checked'); } }); }) </script> </head> <body> <label class="checkbox-checked"><input type="checkbox" checked="true"/>один</label> <label><input type="checkbox"/>два</label> <label><input type="checkbox"/>три</label> <label class="checkbox-checked"><input type="checkbox" checked="true"/>четыре</label> </body> </html> |
тогда наверное дело в чем-то еще в коде. спасибо.
|
Часовой пояс GMT +3, время: 05:36. |