Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2012, 11:05
Новичок на форуме
Отправить личное сообщение для solodov_mn Посмотреть профиль Найти все сообщения от solodov_mn
 
Регистрация: 11.01.2012
Сообщений: 4

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

Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2012, 11:41
Новичок на форуме
Отправить личное сообщение для solodov_mn Посмотреть профиль Найти все сообщения от solodov_mn
 
Регистрация: 11.01.2012
Сообщений: 4

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

Последний раз редактировалось solodov_mn, 11.01.2012 в 11:49.
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2012, 13:25
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

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'));
});
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2012, 13:44
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

А в чем смысл вообще в написании какого-либо кода тут? Надо оборачивать чекбокс в label а не писать код там, где он не нужен.
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2012, 13:49
Новичок на форуме
Отправить личное сообщение для solodov_mn Посмотреть профиль Найти все сообщения от solodov_mn
 
Регистрация: 11.01.2012
Сообщений: 4

Попробовал использовать Ваш вариант, но почему-то не работает.
А условие поставил для того, чтобы при нажатии на li, в котором находится чекбокс с атрибутом checked, этот атрибут исчезал, а при нажатии на li, в котором находится чекбокс без атрибута checked, этот атрибут появлялся
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2012, 13:59
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

http://learn.javascript.ru/play/e7Nor
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2012, 14:05
Новичок на форуме
Отправить личное сообщение для solodov_mn Посмотреть профиль Найти все сообщения от solodov_mn
 
Регистрация: 11.01.2012
Сообщений: 4

ваый,
Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять элемент матрицы при нажатии кнопки в другом фрейме Alexiy Общие вопросы Javascript 1 09.11.2011 11:49
DOM элемент клонируется при хранении в хэше vls Events/DOM/Window 1 04.11.2011 14:57
Новый элемент отсутствует в DOM модели StrSprut jQuery 4 19.09.2011 12:50
удаление disabled при нажатии на элемент выпадающего списка deNSe_01 Events/DOM/Window 3 28.01.2011 10:49
Как создать элемент при нажатии мышки? Арсений Элементы интерфейса 4 03.07.2010 15:00