我有一个带有“全选”复选框的表格,它可以勾选该列中的所有复选框。
<input class="check-all" type="checkbox" id="masterCheck" />
但是,在我的某个页面上,我想要在页面加载时自动勾选“全选”复选框。
为此,我尝试触发一个像下面这样的trigger('click')函数:
$(document).ready(function () {
if ($("#masterCheck").attr('checked')) {
} else {
$("#masterCheck").trigger('click');
}
});
这可以正确地勾选复选框,但对于带有类名.check-all的复选框不触发我的自定义点击事件(如下):
$(function () {
$('.check-all').click(function () {
$(this).parents('table:eq(0)').find(':checkbox').attr('checked', this.checked);
});
});
我还尝试添加了一个JavaScript setTimeout函数,以为自定义的点击功能还没有加载,但等待1、2、3秒后它仍未触发自定义的点击功能。
在页面加载时,我可以取消预选中的复选框,然后重新选中它以完美地选择该列中的所有复选框。
我是否需要在jQuery的文档就绪事件中添加特殊内容,以允许它触发自定义的点击事件?
***编辑1:
好的,我已经尝试在我的页面上的document.ready函数的正上方添加自定义的点击事件,以确保它已经加载(因为以前的自定义点击事件在我的_Layout中使用的主js文件中)。除此之外,我还更改了我的复选框类以与我的新自定义点击事件对应,以避免与主js文件中的冲突。
<input class="check-allx" type="checkbox" id="masterCheck" />
// Check all checkboxes when the one in a table head is checked:
$(function () {
$('.check-allx').click(function () {
$(this).parents('table:eq(0)').find(':checkbox').attr('checked', this.checked);
alert(this);
});
});
// Check for unchecked masterCheck
$(document).ready(function () {
if ($("#masterCheck").attr('checked')) {
} else {
//$("#masterCheck").trigger('click');
$("#masterCheck").click();
}
});
这似乎在自定义点击事件(即progress)中触发了我的警报,但是所有复选框都没有像他们应该的那样被选中。注意:我还将trigger('click')更改为.click(),在我的情况下两者都是一样的。