Przeczytałem kilka rozwiązań tutaj, ale mój problem różni się na tyle, że te nie będą działać. Zasadniczo, jeśli przycisk opcji jest zaznaczony, dodaj klasę css do elementu nadrzędnego. Jeśli radio nie jest zaznaczone, usuń klasę css. Brzmi prosto?jQuery dodaj/usuń klasę css w wybranym radiu
Mam więcej niż jedną grupę przycisków opcji, więc innymi słowy, będzie kilka przycisków wybieranych jednocześnie. Każda grupa przycisków radiowych znajduje się również w różnych częściach strony oddzielonych od innych html.
Oto co wymyśliłem:
$(document).ready(function() {
$('input').click(function() {
if ($('input:not(:checked)')) {
$('div').removeClass('style1');
}
if ($('input').is(':checked')) {
$(this).parent().addClass('style1');
}
});
});
myślę, że jestem na dobrej drodze z wejściem: not (: zaznaczona), ale w następnym wierszu usuwa style1 ze wszystkich elementów div zamiast sprawdzać, czy jest zaznaczone pole wyboru innego elementu div.
Zgaduję, o co pytam, to jak napisać skrypt, który po kliknięciu przycisku radiowego, dodać klasę css do rodzica, a następnie znaleźć wszystkie znaczniki div na stronie, które mają dziecko danych wejściowych. Jeśli wejście div nie jest zaznaczone, usuń klasę css. Więc jeśli element div ma element podrzędny i jest zaznaczony, nie usuwaj klasy css z danych wejściowych div.
Mam nadzieję, że ma to sens.
rok później ..nadal pomógł komuś – andrewk
Działa dobrze, ale kod wydaje się mieć w nim nielegalny charakter. Można go łatwo usunąć za pomocą skrzypiec (zaznaczone na czerwono): https://jsfiddle.net/y5hkookq/ – cptstarling
Istnieje również fakt, że klasy są tracone podczas odświeżania strony, mimo że opcje są nadal sprawdzane. – cptstarling