Вы можете сделать это так:
$("table input[type='radio']").click(function() {
$(this).closest("tr").find("img").show();
});
Когда радио щелкают, оно находит родительскую строку той, которая нажата, находит изображение в этой строке и показывает его. Это предполагает, что изображение ранее было скрыто с display: none
.
Для лучшего долгосрочного обслуживания, вы должны:
- Поместите идентификатор в таблицу, чтобы этот код мог удостовериться, и выберите только нужную таблицу (не все таблицы в документе).
- Поместите имя класса на изображение, которое вы хотите показать, чтобы оно могло быть уникально нацелено и не было риска получить любое другое изображение, которое может быть добавлено в таблицу в будущем.
Однажды, выполнив эти два шага, код может выглядеть следующим образом:
$("#choices input[type='radio']").click(function() {
$(this).closest("tr").find(".tick").show();
});
Если бы вам пришлось делать это в простом javascript без полного механизма выбора, я бы сделал это иначе, создав значение id для изображения. Предполагая, что вы положили идентификатор "choices" на стол, он будет выглядеть примерно так:
// add event cross browser
function addEvent(elem, event, fn) {
if (elem.addEventListener) {
elem.addEventListener(event, fn, false);
} else {
elem.attachEvent("on" + event, function() {
// set the this pointer same as addEventListener when fn is called
return(fn.call(elem, window.event));
});
}
}
addEvent(document.getElementById("choices"), "click", function(e) {
// use event bubbling to look at all radio clicks
// as they bubble up to the table object
var target = e.target || e.srcElement;
if (target.tagName == "INPUT" && target.type == "radio") {
// manufacture the right ID and make that image visible
var name = target.name;
document.getElementById(name + "i").style.display = "inline";
console.log("show image " + name + "i");
}
});
А вот рабочий пример: http://jsfiddle.net/jfriend00/uMUem/