Kod który podałeś umieściłem tak:
$(function() {
var x =document.querySelectorAll('span.checked');
[].forEach.call(x, function(span) {
span.parentElement.parentElement.classList.add('test');
});
});
Podczas ładowania strony domyślnie jeden element ma klasę checked i tam faktycznie jest dopisywana klasa "test", natomiast gdy zaznaczę inny element to nie ma żadnego zdarzenia które by usuwało klasę z tego li i dodawało do nowo zaznaczonego.
EDYCJADostałem kilka kodów które powinny działać ale nie działają, wydaje mi sie że mają coś z klasami namieszane ale nie mogę dojść z tym ładu,w oryginale te kody któe dostałem wyglądają tak:
$(function() {
$('span.checked input').change(function() {
var x = document.querySelectorAll('span');
[].forEach.call(x, function(span) {
if (span.parentElement.parentElement.classList.contains('checked')) { // check if li has class
span.parentElement.parentElement.classList.remove('checked'); // remove class test from li
}
});
this.parentElement.parentElement.parentElement.classList.add('test');
}).change(); // .change will run for the 1st time when page loads
});
kolejny to:
$(function() {
$('span.checked input').change(function() {
var x = document.querySelectorAll('li.vir');
[].forEach.call(x, function(li) {
if (li.contains('checked')) { // check if li has class
li.classList.remove('checked'); // remove class test from li
}
});
this.parentElement.parentElement.parentElement.classList.add('test');
}).change(); // .change will run for the 1st time when page loads
});
i trzeci:
$(function() {
$('span.checked input').change(function() {
$('li.vir').removeClass('test'); //remove class test from li
$(this).closest('li').addClass('test'); // add class test to li
}).change(); // .change will run for the 1st time when page loads
});
EDYCJA 2Mam działające rozwiązania które u mnie nie działają. Pytanie dlaczego to może u mnie nie działać?
Tutaj dwa teoretycznie działające rozwiązania, które u mnie nie ruszają:
https://jsfiddle.net/ukbgqn1c/4/https://jsfiddle.net/ukbgqn1c/3/