jquery 语法 .on("change","input[name^=

jquery syntax for .on("change","input[name^=

项目重点

切换复选框

特殊要求

需要绑定包含这些复选框的新(动态)添加的 div.id container注意:这个div.id是动态生成的(客户端)。

状态

我的 Working Fiddle 成功地在 1(一个)或 0(none)个复选框之间切换。

HTML

<div id="bind_id">
    <input type="checkbox" name="iso_01[]" class="setTitlePre1" value="L/R" />
    <label for name "iso_01" class="isoVar1">No.1</label>
    <input type="checkbox" name="iso_01[]" class="setTitlePre2" value="Alt" />
    <label for name "iso_01" class="isoVar2">No.2</label>
</div>

工作脚本

var checkboxes;
checkboxes = $("input[name^=iso_01]").change(function (e) {
checkboxes.not(this).prop("checked", false);
}
});

想要的结果

我在将 .click() 更新为 .on("click","input..." 的语法方面遇到问题,请参阅 Bound Fiddle

更新脚本

var checkboxes;
checkboxes = $("#bind_id").on("change", "input[name^=iso_01]", function (e) {
if (this.checked) {
checkboxes.not(this).prop("checked", false);
}
});

你的问题是,

checkboxes = $("#bind_id").on

并没有按照您认为的那样去做。它不是存储所有匹配的节点。

试试这个:

在回调中,更改

checkboxes.not(..)

$('input[name^=iso_01]').not(this).prop("checked", false);

Working fiddle

或者如果它们是动态加载的,你可以使用$('#bind_id').find('input[name^=iso_01]')

问题是 checkboxes#bind_id 元素,而不是复选框。您需要 find 来自该元素的子元素,以获取子复选框元素。

工作示例:

var wrapper;
wrapper = $("#bind_id").on("change", "input[name^=iso_01]", function (e) {
    if (this.checked) {
        wrapper.find("input[name^=iso_01]").not(this).prop("checked", false);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="bind_id">
    <input type="checkbox" name="iso_01[]" class="setTitlePre1" value="L/R" />
    <label for name "iso_01" class="isoVar1">No.1</label>
    <input type="checkbox" name="iso_01[]" class="setTitlePre2" value="Alt" />
    <label for name "iso_01" class="isoVar2">No.2</label>
</div>

这不是复选框的用途。您应该使用单选按钮:

<input type="radio" name="example" value="1" id="1">
<label for="1">one</label>
<input type="radio" name="example" value="2" id="2">
<label for="2">two</label>