2014-11-20 4 views
0

У меня есть этот HTMLДобавление стиля к родительскому, если флажок установлен?

<div class="bot"> 
    <span class="k-checkbox" role="presentation"> 
     <div class="icheckbox_minimal-blue checked"> 
     </div> 
    </span> 
</div> 
<div class="bot"> 
    <span class="k-checkbox" role="presentation"> 
     <div class="icheckbox_minimal-blue"> 
     </div> 
    </span> 
</div> 

Что мне нужно, это когда icheckbox_minimal-синий класс имеет класс проверил добавить только что родительский новый класс включить Это означает, что, когда пример должен быть, как этот

<div class="bot enable"> 
    <span class="k-checkbox" role="presentation"> 
     <div class="icheckbox_minimal-blue checked"> 
     </div> 
    </span> 
</div> 
<div class="bot"> 
    <span class="k-checkbox" role="presentation"> 
     <div class="icheckbox_minimal-blue"> 
     </div> 
    </span> 
</div> 

Посмотрите, что теперь у класса бот есть возможность включения класса?

+7

Вы еще что-нибудь пробовали? – j08691

ответ

0

Если вы хотите, чтобы обработчик изменения класса должен быть динамичным, вы должны создать пользовательское событие и привязать обработчик, что:

for (i = 0; i < checkBoxArray.length; i++) { 
    var checkBoxItem = document.getElementsByClassName("icheck_minimal-blue")[i]; 
    $(checkBoxItem).on('click', function() { 
     $(checkBoxItem).toggleClass("checked").trigger("classChanged"); 
    }); 

    $(checkBoxItem).on('classChanged', function() { 
     $(checkBoxItem).parents().eq(1).toggleClass("enable"); 
    }); 
} 
1

К сожалению, это невозможно с использованием только CSS, поскольку CSS может выбирать только детей и последующих братьев и сестер. Используя jQuery, это можно сделать очень просто с помощью селектора .parent().

Вы не указали достаточно кода в своем примере для моделирования рабочего примера, поэтому я сделал свой собственный простой пример, и вы можете настроить его на свои нужды.

$('.checkbox').change(function() { 
 
    $(this).parent().toggleClass("enable"); 
 
});
.enable { 
 
    background-color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <input type="checkbox" class="checkbox"> 
 
</div>


Поскольку вы используете дивы, а не стандартные элементы формы, вам нужно, чтобы вызвать это в вашем коде, который применяет класс «включить». Где-то в этом коде попробуйте поставить эту строку (хотя трудно понять, будет ли это работать, не видя больше вашего кода, чем то, что вы здесь поделили).

$(this).parent().toggleClass("enable"); 
+0

op использует 'divs', а не' input' – Xenyal

+0

@Xenyal. Я не чувствовал, что OP предоставил достаточно информации для создания проверяемого примера с использованием div. Я дал очень общий ответ на вопрос в названии, и ОП может адаптировать его к своему прецеденту. –

Смежные вопросы