Да, вы захотите перейти на уровень строк (если переключатели просто связаны друг с другом в строке) или уровень таблицы (если они связаны друг с другом в строках).
Предполагается, что только в пределах строки ( пример в реальном времени ):
$('#tblContainer :radio').click(function() {
var $this = $(this);
// Remove highlight
$this.closest("tr").find("td.highlight-blue").removeClass("highlight-blue");
// Add it to this one
$this.closest("td").addClass("highlight-blue");
});
Обратите внимание, что вы можете нажать только на переключатель, если он выбран, поэтому проверять не нужно
Не по теме : людям будет проще нажимать эти переключатели, если вы добавите label
s ( живая копия ):
<label><input type="radio" name="book" value="book1"> Book 1</label>
Если это так, вы можете добавить этот стиль CSS к меткам ( живая копия ):
label {
cursor: pointer;
}
..., чтобы сделать их более очевиднымиможно щелкнуть.
Обновление : Из комментариев видно, что ваши радиокнопки находятся в разных строках друг от друга, и что у вас также есть смешанные другие радиокнопки,как это:
<table id="tblContainer">
<thead>
<tr>
<th>Books</th>
<th>Magazines</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label><input type="radio" name="book" value="book1"> Book 1</label>
</td>
<td>
<label><input type="radio" name="magazine" value="magazine1"> Magazine 1</label>
</td>
</tr>
<tr>
<td>
<label><input type="radio" name="book" value="book2"> Book 2</label>
</td>
<td>
<label><input type="radio" name="magazine" value="magazine2"> Magazine 2</label>
</td>
</tr>
<tr>
<td>
<label><input type="radio" name="book" value="book3"> Book 3</label>
</td>
<td>
<label><input type="radio" name="magazine" value="magazine3"> Magazine 3</label>
</td>
</tr>
</tbody>
</table>
В этом случае, чтобы удалить класс из старого, вам просто нужно найти другие переключатели с тем же самымmes, затем их родительские ячейки с этим классом ( живая копия ):
jQuery(function($) {
$('#tblContainer :radio').click(function() {
var $this = $(this);
// Remove highlight from cells containing
// radio buttons with this same name
$this
.closest("table")
.find('input:radio[name="' + this.name + '"]')
.closest("td.highlight-blue")
.removeClass("highlight-blue");
// Add it to this one
$this.closest("td").addClass("highlight-blue");
});
});
Или, альтернативно, подход «класса маркера» (здесь я использовал «rb-» плюсимя переключателя, но вы должны убедиться, что имена переключателей действительны для имен классов) ( live copy ):
jQuery(function($) {
$('#tblContainer :radio').click(function() {
var $this = $(this);
// Remove previous highlight if any
$("td.highlight-blue.rb-" + this.name).removeClass("highlight-blue");
// Add it to this one
$this.closest("td").addClass("highlight-blue rb-" + this.name);
});
});