Переключение чекбокса при нажатии на родительский DOM-элемент
Добрый день, уважаемые форумчане!
Довольно долго я искал и находил интересующие меня вопросы на этом форуме, но вот возник вопрос, на который ответа найти не смог (вполне возможно, плохо искал) и решил зарегистрироваться и озвучить его. Но довольно демагогии, собственно, сам вопрос...:) есть фрагмент кода: <ul style="list-style: none;" class="prof_list"> <li><input type="checkbox" id="1" name="prof">Текст 1</li> <li><input type="checkbox" id="2" name="prof">Текст 2</li> <li><input type="checkbox" id="3" name="prof">Текст 3</li> <li><input type="checkbox" id="4" name="prof">Текст 3</li> </ul> Необходимо, чтобы при клике на элемент li чекбокс, находящийся в этом элементе, становился checked Заранее спасибо!:) |
Решение найдено, тема снята:
$('ul[class=prof_list]>li').live('click', function(){ if($(this).children().attr('checked')==true) $(this).children().removeAttr('checked'); else $(this).children().attr('checked', 'checked'); }); |
1. Зачем здесь .live()? Он же устрел. И почему не обойтись обычным .click()?
2. В чем смысл проверки ($(this).children().attr('checked')==true), если левая часть выражения истинна, то и так пойдем по первой ветке условия. Ну и как то так тоже должно работать: $('ul[class=prof_list]>li').click(function(){ var check = $(this).children(); check.attr('checked', !check.attr('checked')); }); |
А в чем смысл вообще в написании какого-либо кода тут? Надо оборачивать чекбокс в label а не писать код там, где он не нужен.
|
Попробовал использовать Ваш вариант, но почему-то не работает.
А условие поставил для того, чтобы при нажатии на li, в котором находится чекбокс с атрибутом checked, этот атрибут исчезал, а при нажатии на li, в котором находится чекбокс без атрибута checked, этот атрибут появлялся |
|
ваый,
Спасибо!:) |
Часовой пояс GMT +3, время: 08:27. |