我有很多复选框,如下所示:
<input class='masterCheckbox' type='checkbox' onclick='clickAll()' />
<input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' />
<input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' checked />
<input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' checked />
... lets say there's exactly 100 ...
<input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' />
<input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' />
<input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' checked />
ajaxCall()
函数对PHP页面进行ajax调用(使用jQuery)以在DB中进行一些更改。
我希望masterCheckbox
复选框在选中后,浏览所有未选中的复选框并单击全部,以便它们各自进行单独的ajax调用。
使用jQuery,我设法获得所有modifyDb
复选框,然后使用.each()
函数在每个元素上调用.click()
。这视觉上有效;复选框被切换,但是没有进行ajax调用。
这是因为ajax调用太快了吗?我可以以某种方式排队函数调用吗?
答案 0 :(得分:4)
使用trigger
。
以下代码重新使用了所有onclick
.modifyDb
function clickAll() {
$('.modifyDb').trigger('click');
}
REFFERENCE
答案 1 :(得分:2)
我重新排序并删除所有内联事件处理程序。像这样:
<input class='masterCheckbox' type='checkbox' />
<input class='modifyDb' type='checkbox' data-id='someId)' />
<!-- .... -->
然后绑定它们:
$(".modifyDb").click(function() {
var id = $(this).data("id");
ajaxCall(id);
});
对于主复选框:
$(".masterCheckbox").click(function() {
$(".modifyDb").each(function() {
var id = $(this).data("id");
ajaxCall(id);
// or if you really must, you could use trigger() here
})
});
答案 2 :(得分:1)
这将触发尚未检查的框上的click事件
function clickAllUnchecked(){
$('.modyfDb').not(':checked').trigger('click')
}