我是jquery的新手,我有一个疑问。我有以下jQuery脚本来检查选中的复选框的数量。
<script>
function countChecked() {
var n = $("input:checked").length;
$("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
countChecked();
$(":checked").click(countChecked);
</script>
但是,如果我在整个页面中只有一组复选框,则此方法有效。但是我在页面中有几组不同的复选框和单选按钮。我想要将jQuery绑定到的复选框,其name属性为'selectArticle []'。
我对上述脚本做了哪些更改,使其仅监视这些复选框。也可以修改上面的脚本来实际获取所检查的checbox的值。
有人可以为我修改上面的脚本吗...谢谢!
答案 0 :(得分:4)
Filter by attribute [docs]。我认为您的代码实际上不正确,您只将事件处理程序绑定到已选择的元素。如果要将其绑定到该组的所有复选框,请选择所有这些复选框:
var $checkboxes = $("input[name='selectArticle[]']");
function countChecked() {
var n = $checkboxes.filter(":checked").length;
$("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
$checkboxes.change(countChecked).change();
缓存元素($checkboxes
)比在每次调用处理程序时搜索它们更好。
如果您确实只想将处理程序绑定到选定的处理程序,请绑定事件处理程序,如下所示:
$("input[name='selectArticle[]']:checked").change(countChecked).change();
最好将事件处理程序绑定到change
事件(也可以通过键盘更改选项)。
您还看到,它不是调用countChecked
,而是在绑定事件处理程序后通过调用change
手动触发change
事件。
答案 1 :(得分:0)
使用类似的东西:
$("input[name='selectArticle[]']:checked")
答案 2 :(得分:0)
而不是做
$("input:checked").length;
你可以做到
$("input[name='selectArticle[]']:checked").length;
已知属性[name = certainname]会导致代码出现延迟。更好的是给你需要某个类的所有复选框,然后执行以下操作:
<script>
function countChecked() {
var n = $("input.classname:checked").length;
$("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
countChecked();
$(".classname:checked").click(countChecked);
</script>
修改强>
如果您想使用该值,您可以执行以下操作:
<script>
function alertValues() {
$("input.classname:checked").each(function() {
alert($(this).val());
}
}
alertValues();
</script>
如果您现在调用alertValues(),它将警告所选复选框的值。
答案 3 :(得分:0)
$( “输入[名称= '复选框名']:检查”)长度
。其中checkbox-name:是复选框列表的名称