Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Переключение чекбокса при нажатии на родительский DOM-элемент (https://javascript.ru/forum/jquery/24704-pereklyuchenie-chekboksa-pri-nazhatii-na-roditelskijj-dom-ehlement.html)

solodov_mn 11.01.2012 11:05

Переключение чекбокса при нажатии на родительский 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

Заранее спасибо!:)

solodov_mn 11.01.2012 11:41

Решение найдено, тема снята:
$('ul[class=prof_list]>li').live('click', function(){
   if($(this).children().attr('checked')==true)
      $(this).children().removeAttr('checked');
   else
      $(this).children().attr('checked', 'checked');
});

skfyann 11.01.2012 13:25

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'));
});

ваый 11.01.2012 13:44

А в чем смысл вообще в написании какого-либо кода тут? Надо оборачивать чекбокс в label а не писать код там, где он не нужен.

solodov_mn 11.01.2012 13:49

Попробовал использовать Ваш вариант, но почему-то не работает.
А условие поставил для того, чтобы при нажатии на li, в котором находится чекбокс с атрибутом checked, этот атрибут исчезал, а при нажатии на li, в котором находится чекбокс без атрибута checked, этот атрибут появлялся

ваый 11.01.2012 13:59

http://learn.javascript.ru/play/e7Nor

solodov_mn 11.01.2012 14:05

ваый,
Спасибо!:)


Часовой пояс GMT +3, время: 08:27.