Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменить класс родителя при input checkbox (https://javascript.ru/forum/dom-window/52791-izmenit-klass-roditelya-pri-input-checkbox.html)

Deff 07.01.2015 12:02

Цитата:

Сообщение от рони
Deff,
если checkbox много ваш код выдаст неверный результат

:) Ну значит невнимательно читал,(думал много див с чекбоксами
Кстать, можно на ты, вродь давно друг-друга знаем.
Как вариант: добавление к атрибуту родительского див(к примеру data) +1 или -1 в зависимости от состояния текущего чекбокса при change, - далее смотреть что data>0; тогда each не нужен

chelkaz 07.01.2015 12:52

Огромное спасибо! Отличный пример! Мне очень хотелось логику понять. А то я уже пробовал вычислить контейнер при фокусе и получалось черти что)

chelkaz 12.01.2015 20:39

Цитата:

Сообщение от рони (Сообщение 350027)
chelkaz,
:) вариант для сласстёны ...

Добрый вечер! Возникла трудность, при перезагрузки страницы стили слетают. Я пробовал вместо клика ставить реди, но не помогает. Как сделать проверку при загрузки страницы на чекнутые инпуты? Тоесть это работает отлично:

$(function(){
		var s = $(".bx_filter_container");
		s.each(function(indx, el){
			$(":checkbox", el).click(function(event) {
				$(el)[($(el).has(":checked").length ? "add" : "remove")+"Class"]("orange");
			});

		});


А как вставить проверку не приложу ума. То есть после перезагрузки нужно проверить инпуты и те что нажаты добавить класс - orange. У меня не получается из за того, что обращаться нужно через родителя... Подскажите пожалуйста...

Как то так думаю?

$(function() {
		if ($(".css-checkbox").attr('checked') == 'checked') {
			а тут как то добавить класс
		}
	});

рони 12.01.2015 20:56

chelkaz,
не судьба строку 5 продублировать в строке 7

chelkaz 12.01.2015 21:05

Гм) Я пробовал так - но походу недоглядел...
$(function(){
		var s = $(".bx_filter_container");
		s.each(function(indx, el){
			$(el)[($(el).has(":checked").length ? "add" : "remove")+"Class"]("orange");
		});
	});
Все работает точно) Спасибо!

рони 12.01.2015 21:14

chelkaz,
$(function(){
       var s = $(".bx_filter_container");
       s.each(function(indx, el){
        $(":checkbox", el).click(function(event) {
        $(el)[($(el).has(":checked").length ? "add" : "remove")+"Class"]("orange");
      });
         $(el)[($(el).has(":checked").length ? "add" : "remove")+"Class"]("orange");
      });


});


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