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);
或者如果它们是动态加载的,你可以使用$('#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>
项目重点
切换复选框
特殊要求
需要绑定包含这些复选框的新(动态)添加的 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);
或者如果它们是动态加载的,你可以使用$('#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>