Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript排队单击事件_Javascript_Jquery - Fatal编程技术网

JavaScript排队单击事件

JavaScript排队单击事件,javascript,jquery,Javascript,Jquery,我有一个长长的复选框列表,如下所示: <input class='masterCheckbox' type='checkbox' onclick='clickAll()' /> <input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' /> <input class='modifyDb' type='checkbox' onclick='ajaxCall(someId)' check

我有一个长长的复选框列表,如下所示:

 <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 />

... 假设正好有100个。。。
ajaxCall()
函数对PHP页面进行ajax调用(使用jQuery)以在数据库中进行一些更改

我希望选中
masterCheckbox
复选框时,检查所有未选中的复选框并单击它们,以便它们各自进行单独的ajax调用

使用jQuery,我成功地获得了所有的
modifyDb
复选框,然后使用
。each()
函数调用
。在每个元素上单击()。这在视觉上起作用;复选框是切换的,但是没有进行ajax调用


这是因为ajax调用太快了吗?我可以以某种方式将函数调用排队吗?

使用
trigger

以下代码重新单击所有
onclick
。modifyDb

function clickAll() {
    $('.modifyDb').trigger('click');
}
参考文献


这将在尚未选中的框上触发单击事件

function clickAllUnchecked(){
    $('.modyfDb').not(':checked').trigger('click')
}

我会重新排序,去掉所有的内联事件处理程序。大概是这样的:

<input class='masterCheckbox' type='checkbox' />

<input class='modifyDb' type='checkbox' data-id='someId)' />
<!-- .... -->
对于主复选框:

$(".masterCheckbox").click(function() {
    $(".modifyDb").each(function() {
        var id = $(this).data("id");
        ajaxCall(id);
        // or if you really must, you could use trigger() here
    })
});

啊,我完全忘了触发器这真的有用吗?根据
.click()
只是
.trigger('click')
的一个快捷方式,所以两者都应该可以工作。OP已经在使用
$.fn.click
,它只会路由到
$.fn.trigger
,仅供参考:那么你是说我onclick=''不会触发?@EliteOctagon:实际上我刚刚检查过,而且它似乎在触发
onclick
时工作正常。所以我不确定为什么
.click()
对您不起作用。这有助于解决类似not()修饰符的问题,非常注重细节
$(".masterCheckbox").click(function() {
    $(".modifyDb").each(function() {
        var id = $(this).data("id");
        ajaxCall(id);
        // or if you really must, you could use trigger() here
    })
});