Я создаю здесь несколько элементов div:
$.each(obj.teams, function(d, t) {
count+=1;
team = "";
replay_teams+= '<div class = "rgtside" id = "team'+count+'">';
...
Как мы видим на этом рисунке, мои div генерируются, как задумано, с хорошими идентификаторами:
Кроме того, у меня есть несколько радиокнопок (cb ..), и я дал ему функцию изменения, в которой я пытаюсь изменить класс своего div в соответствии с выбранной радиокнопкой.
//loop over some stuffs to generate the radio...
$("#cb"+id) // select the radio by its id
.change(function(){ // bind a function to the change event
if ( $(this).is(":checked") ){ // check if the radio is checked
selectedWinner = $(this).val(); // retrieve the value
console.info("new value : "+selectedWinner)
var i;
for (i = 1; i < array.length+1; i++) {
$("#team"+i).attr('class','rgtside'); //reset all div with the normal class
}
$("#team"+selectedWinner).attr('class','rgtside win'); //assign the good class to the winner
}
});
Моя функция работает, так как я получаю сообщение на консоли каждый раз, когда меняю выбранное значение радиокнопок.
Похоже, эта строка кода не работает:
$("#team"+selectedWinner).attr('class','rgtside win');
поскольку я не могу заменить класс rgtside на rgtside победа ...
Похоже, он не может найти мой элемент div, но идентификатор правильный?
извините, код был слишком сложным, чтобы его можно было описать в нескольких строках кода



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте этот код, посмотрите, поможет ли:
$("#td_id").toggleClass('rgtside win');
Используйте методы addClass(), removeClass() и toggleClass() вместо attr(). Кстати, нет необходимости включать класс .rgtside, если он всегда в каждом div, потому что эти методы jQuery только добавляют / удаляют указанные классы, они не перезаписывают атрибут class, как это делает свойство className.
$(':radio').change(function() {
var selectedWinner = $(this).val();
$('.rgtside').removeClass('win');
if ($(this).is(":checked")) {
$("#team" + selectedWinner).addClass('win');
} else {
$("#team" + selectedWinner).removeClass('win');
}
});
//OR
/*
$(':radio').on('click', function() {
var selectedWinner = $(this).val();
$('.rgtside').removeClass('win');
$('#team'+selectedWinner).toggleClass('win');
});
*/.win {
outline: 5px solid red
}<input type='radio' name='rad' value='0'> 0
<input type='radio' name='rad' value='1'> 1
<input type='radio' name='rad' value='2'> 2
<div id='team0' class='rgtside'>team 0</div>
<div id='team1' class='rgtside'>team 1</div>
<div id='team2' class='rgtside'>team 2</div>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Нет проблем, удачного кодирования.
Пожалуйста, опубликуйте весь код, который может воспроизвести проблему.