Несколько связанных вопросов уже существуют на этом сайте и в других местах, но ни один из ответов, похоже, не применим к моей ситуации. У меня есть куча переключателей в HTML.jQuery: динамически связывающие события с объектами dom
<input type="radio" name="b1" value="aa"> aa<br>
<input type="radio" name="b1" value="ab"> ab<br>
<input type="radio" name="b1" value="ac"> ac<br>
<input type="radio" name="b2" value="ba"> ba<br>
<input type="radio" name="b2" value="bb"> bb<br>
<input type="radio" name="b2" value="bc"> bc<br>
<script type="text/javascript">
var PK = {
modes: ["b1", "b2"],
init: function() {
// attach actions to radio buttons
for (var key in this.modes) {
var mode = this.modes[key];
$("input[name='" + mode + "']").bind(
"change",
function() {
PK[mode]($("input[name='" + mode + "']:checked").val());
}
);
}
},
b1: function(val) { .. do something .. },
b2: function(val) { .. do something else .. },
};
$(document).ready(function() {
PK.init();
});
</script>
Вышеуказанный не работает вообще. Я попробовал .live вместо .bind, и даже это не работает должным образом. Фактически, оба они связывают действие с тем, что является последней записью в режимах, в приведенном выше, «b2». То есть, функция PK.b2() запускается, изменяю ли значение в кнопках b1 или b2. Если я отменяю записи режимов, последний принимает значение. Как я могу выполнить его выше успешно?