这个网站和其他地方已经存在几个相关的问题,但似乎没有一个答案适用于我的情况。我有一堆 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”中。也就是说,无论我更改 b1 还是 b2 按钮中的值,都会触发函数 PK.b2()。如果我反转模式条目,则最后一个将采用该值。我怎样才能成功地完成他上面的任务?