Несколько связанных вопросов уже существует на этом сайте и в других местах, но ни один из ответов, похоже, не относится к моей ситуации. У меня есть куча переключателей в HTML.
<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. Если я изменю записи режимов, последний принимает значение. Как я могу успешно достичь его выше?