在复选框检查和JavaScript取消检查时从全局数组中删除特定元素
当用户选中或取消选中表单中的复选框时,我尝试更新全局数组。然后将该数组提交给服务器,以更新数据库中选中的选项。 我已经将选中复选框的ID放入一个数组,但不确定如何删除它们 我创建了一个基本的JSFIDLE来演示:在复选框检查和JavaScript取消检查时从全局数组中删除特定元素,javascript,jquery,arrays,push,splice,Javascript,Jquery,Arrays,Push,Splice,当用户选中或取消选中表单中的复选框时,我尝试更新全局数组。然后将该数组提交给服务器,以更新数据库中选中的选项。 我已经将选中复选框的ID放入一个数组,但不确定如何删除它们 我创建了一个基本的JSFIDLE来演示: PS-数组稍后将正确命名:)因为每次都要循环检查所有复选框,只需在开始时清空数组,然后只将选中的项放回: ids = []; if (this.checked) { ids.push(this.id); } 由于每次都循环检查所有复选框,因此只需在开始时清空数组,
PS-数组稍后将正确命名:)因为每次都要循环检查所有复选框,只需在开始时清空数组,然后只将选中的项放回:
ids = [];
if (this.checked) {
ids.push(this.id);
}
由于每次都循环检查所有复选框,因此只需在开始时清空数组,并仅将选中的项放回:
ids = [];
if (this.checked) {
ids.push(this.id);
}
我认为您可能会很好地使用jQuery serializeArray()
编辑:我认为您可能会很好地使用jQuery serializeArray()
编辑:为什么每次单击都要执行此操作,只需在提交表单时执行此操作-有一个:选中的选择器,您也可以使用,而不是选择和迭代您不感兴趣的元素 正如jyoseph所建议的,您可以在这里使用序列化数组来构建名称/值数组 e、 g
为什么每次点击都要这样做,只需在表单提交时这样做-有一个:checked选择器,您也可以使用,而不是选择和迭代您不感兴趣的元素 正如jyoseph所建议的,您可以在这里使用序列化数组来构建名称/值数组 e、 g
我希望你不介意,我把
$(this).is(“:checked”)
换成了效率更高的this.checked
和$(this).attr(“id”)
换成了效率更高的this.id
。OP的代码有一个小错误,我也修复了+我希望你不介意,我用效率更高的this.checked>替换了$(this).is(“:checked”)
。用效率更高的this.id
替换了$(this).attr(“id”)
。OP的代码有一个小错误,我也修复了+问题是表格中有分页。每次调用页面时,都没有更新值的post。因此,需要在每次检查/取消检查时更新全局数组。@RyanP13 Ah-最新突破性需求新闻!有了这些信息,我就不会说上面的话了!我会使用.delegate,而不是所有checkboxesapologies上的点击事件。迫于压力,他匆忙回答了这个问题。是的,我通常也会使用委托。问题是表中有分页。每次调用页面时,都没有更新值的post。因此,需要在每次检查/取消检查时更新全局数组。@RyanP13 Ah-最新突破性需求新闻!有了这些信息,我就不会说上面的话了!我会使用.delegate,而不是所有checkboxesapologies上的点击事件。迫于压力,他匆忙回答了这个问题。是的,我通常也会使用委托。
$('#submitButton').click( function(ev){
var ids = [];
$(':checkbox:checked').each( function(){
ids.push(this.id);
});
//do something with ids
});