本周分享一個比較實用的jQuery小功能:實用jQuery直接操作session。
Ruby可以直接操作session泪电,但有些實用場景下翻屈,不適合用ruby來操作,比如在一個index頁面(有分頁)搜吧,每一條記錄前面都有一個復(fù)選框,我現(xiàn)在想跨頁選擇記錄杨凑,然后批量提交滤奈,此時如果內(nèi)在jQuery中直接操作session,那實現(xiàn)這個功能就比較輕松了:
jQuery操作session的方法非常簡單撩满,常用的就是三種操作蜒程,下面還是用一個實例說明一下:
需求:在一個固定資產(chǎn)的index頁面中,庫里有N多的固定資產(chǎn)數(shù)據(jù)伺帘,現(xiàn)在需要跨頁勾選特定的固定資產(chǎn)昭躺,然后導(dǎo)出一份固定資產(chǎn)清單。
先講一下操作jQuery操作session的方法:
1.新建和賦值: $.session.set('all_asset_item_ids', 'new_value') 創(chuàng)建一個名為'all_asset_item_ids'的session伪嫁,并賦值為'new_value'领炫;
2.清空原來的值:$.session.set('all_asset_item_ids', '') 其實跟上面那個完全一樣。张咳。驹吮。
3.刪除session: $.session.remove('all_asset_item_ids') 這個也不需要多解釋了。晶伦。碟狞。
總結(jié)一下:非常簡單!
下面再簡單說明一下跨頁選擇的實現(xiàn)方法
: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);
? ? });
});
大致說明一下:當(dāng)點擊分頁按鈕時,創(chuàng)建一個新數(shù)組脆淹,然后對當(dāng)前頁所有的checkbox進行迭代常空,如果被勾選,則將該條資產(chǎn)記錄的id寫道數(shù)組中去盖溺,然后創(chuàng)建一個名為'all_asset_item_ids'的session漓糙,將數(shù)組的值以及自身之前已經(jīng)有的值合并;
清空所選按鈕不但需要去除勾選烘嘱,還需要清空session昆禽。當(dāng)選完之后,執(zhí)行導(dǎo)入action完成后蝇庭,也需要清空session