sessionStorage會話存儲

頁面使用datatables時須要使用jquery.data()在每一行的某個元素中保存一整行的數據,以便隨時隨地調用準確的行信息,避免了使用td:eq(0)獲取元素在改變列下標狀況下出現數據獲取偏移的問題(好比使用td:eq(5)獲取值,當把下標5的列挪到第3列時就得同步更改爲td:eq(2)):html

"render" : function(data, type, row, meta) {
    var html = "";
    html += "<div><img src=\"images/empty-checkbox.png\" name=\""+row.itemid+"\" class=\"checkBoxImg\"/></div>";
    $("[name='"+row.itemid+"']").data("ItemInfo");
    return html;
}

$("#table tbody tr").each(function(){
    $(this).find(".checkBoxImg").data("ItemInfo");
})
複製代碼

經過這種辦法能夠獲取到datatable渲染每行時爲img元素設置的data緩存數據。但實際使用中出現如下bug:當調用table.draw(false)從新加載表格後,沒法獲取img的data緩存值,緣由未知。此外render方法在每次加載表格時都要被調用兩次,一直找不到緣由。jquery

沒法直接解決問題就只好找變通方法,發現sessionStorage會話存儲比較適合目前的狀況,如下是更新後的代碼:緩存

"render" : function(data, type, row, meta) {
    var html = "";
    html += "<div><img src=\"images/empty-checkbox.png\" name=\""+row.itemid+"\" class=\"checkBoxImg\"/></div>";
    window.sessionStorage.setItem("ItemID_" + row.itemid, JSON.stringify(row));
    return html;
}

$("#table tbody tr").each(function(){
    var itemInfo = JSON.parse(window.sessionStorage.getItem("ItemID_" + checkBox.attr("name")))
})
複製代碼
相關文章
相關標籤/搜索