本網站和其他地方已經存在幾個相關的問題,但沒有一個答案似乎適用於我的情況。我在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」中。也就是說,無論我更改b1或b2按鈕中的值,都會觸發函數PK.b2()。如果我將這些模式條目反轉,最後一個將取值。我如何成功地完成他?