本周分享一个比较实用的jQuery小功能:实用jQuery直接操作session。
Ruby可以直接操作session,但有些实用场景下,不适合用ruby来操作,比如在一个index页面(有分页),每一条记录前面都有一个复选框,我现在想跨页选择记录,然后批量提交,此时如果内在jQuery中直接操作session,那实现这个功能就比较轻松了:
jQuery操作session的方法非常简单,常用的就是三种操作,下面还是用一个实例说明一下:
需求:在一个固定资产的index页面中,库里有N多的固定资产数据,现在需要跨页勾选特定的固定资产,然后导出一份固定资产清单。
先讲一下操作jQuery操作session的方法:
1.新建和赋值: $.session.set('all_asset_item_ids', 'new_value') 创建一个名为'all_asset_item_ids'的session,并赋值为'new_value';
2.清空原来的值:$.session.set('all_asset_item_ids', '') 其实跟上面那个完全一样。。。
3.删除session: $.session.remove('all_asset_item_ids') 这个也不需要多解释了。。。
总结一下:非常简单!
下面再简单说明一下跨页选择的实现方法
:javascript
$(document).ready(function(){
//清空所选,并且清除session
$("#clear_all_checkbox").click(function(){
$('input:checkbox').each(function () {
$(this).attr('checked',false);
});
$.session.remove('all_asset_item_ids');
$.session.set('all_asset_item_ids', '');
});
//点击分页链接,获取id,保存到session中
$(".dataTables_paginate").click(function(){
var cross_page_asset_item_ids = new Array();
$(":checkbox").each(function(){
if ($(this).is(":checked")){
cross_page_asset_item_ids.push($(this).data("asset-item-id"));
}
});
$.session.set('all_asset_item_ids', $.session.get('all_asset_item_ids') + ',' + cross_page_asset_item_ids);
});
});
大致说明一下:当点击分页按钮时,创建一个新数组,然后对当前页所有的checkbox进行迭代,如果被勾选,则将该条资产记录的id写道数组中去,然后创建一个名为'all_asset_item_ids'的session,将数组的值以及自身之前已经有的值合并;
清空所选按钮不但需要去除勾选,还需要清空session。当选完之后,执行导入action完成后,也需要清空session