我正在尝试使用自定义复选框选择所有脚本,并且发生的事情是结果编号将更新,但它会显示计数,因为每个复选框都会提交表单以获取准确的结果编号。但是当选择all将启动click事件时,它会显示正在进行的数字,我希望它只在.each事件完成后显示。使用当前代码,它将不再运行第二个函数来再次显示div这里是我的代码,任何帮助都会很棒:
$('.select_all').live('click',function(){
$('#psf_search_results_number').hide();
$('.psf_grp_content input[name="type[]"]').each(function(){
$(this).click();
});
return false;
},function(){
$('#psf_search_results_number').show();
});
答案 0 :(得分:2)
首先,.live()
已弃用,您应该使用.delegate()
(jQuery 1.7之前版本)或.on()
(适用于jQuery 1.7 +)。
其次,.live()
不带两个函数参数,所以难怪第二个函数从不被调用。
如果您只想在.each()
循环完成后调用第二个函数,则可以使用.on()
这样做:
$(document.body).on('click','.select_all', function(){
$('#psf_search_results_number').hide();
$('.psf_grp_content input[name="type[]"]').each(function(){
$(this).click();
});
$('#psf_search_results_number').show();
return false;
});
如果我们能够看到您的HTML,那么所有.select_all
元素共有的父对象将比使用document.body
更好,但它会在我显示它时起作用。
答案 1 :(得分:1)
我认为你应该这样做(但是我在想,因为我不清楚你的问题是什么):
$('.select_all').live('click',function(){
$('#psf_search_results_number').hide();
$('.psf_grp_content input[name="type[]"]').each(function(){
$(this).click();
});
$('#psf_search_results_number').show();
return false;
});
如果你想在live()
之后执行show()
,只能将each()
传递给{{1}}
答案 2 :(得分:1)
.live( events, data, handler )
事件包含JavaScript事件类型的字符串,例如“click”或“keydown”。从jQuery 1.4开始,字符串可以包含多个空格分隔的事件类型或自定义事件名称。
数据将传递给事件处理程序的数据映射。
handler 触发事件时执行的函数。
.live()
不带两个函数参数