jQuery實(shí)現(xiàn)本地存儲(chǔ)
用jQuery實(shí)現(xiàn)本地存儲(chǔ),供大家參考,具體內(nèi)容如下
- 要求:點(diǎn)擊提交按鈕,讓用戶(hù)輸入的內(nèi)容分別加入到表格對(duì)應(yīng)的列表中
- 要求:點(diǎn)擊每一行的刪除按鈕,能刪除當(dāng)前行
- 要求:刷新頁(yè)面時(shí)能保留當(dāng)前的頁(yè)面效果(數(shù)據(jù)狀態(tài)不會(huì)消失)
HTML結(jié)構(gòu)
<div style="margin-bottom: 15px;"> <input type="text" id="username" placeholder="請(qǐng)輸入姓名"> <input type="text" id="sex" placeholder="請(qǐng)輸入性別"> <input type="text" id="age" placeholder="請(qǐng)輸入年齡"> <input type="button" value="提交" id="btn"> </div> <table border="1" width="540"> <thead> <tr> <td>姓名</td> <td>性別</td> <td>年齡</td> <td>操作</td> </tr> </thead> <tbody> </tbody> </table>
初始化數(shù)據(jù)
// 初始化數(shù)據(jù)的作用:清空頁(yè)面存儲(chǔ)的內(nèi)容恢復(fù)到原始狀態(tài) var arr = [{ 'username': '小紅', 'sex': '女', 'age': 24 }, { 'username': '小藍(lán)', 'sex': '男', 'age': 24 }] localStorage.setItem('data', JSON.stringify(arr))
入口函數(shù)
$(function () { //...以下所有代碼 }
按鈕綁定點(diǎn)擊事件
$('#btn').click(function () { // var data = getData() // 綁定點(diǎn)擊事件 var obj = { // 獲取輸入框中的值 username: $('#username').val(), sex: $('#sex').val(), age: $('#age').val() } // 重新獲取數(shù)據(jù) var data = getData() // 重新往本地添加數(shù)據(jù) data.push(obj) // 存儲(chǔ)數(shù)據(jù) setData(data) // 渲染到頁(yè)面 randerData() })
獲取本地存儲(chǔ)中的數(shù)據(jù)并把數(shù)據(jù)轉(zhuǎn)成復(fù)雜的數(shù)據(jù)類(lèi)型
function getData() { // 獲取的是字符串類(lèi)型,獲得數(shù)據(jù),沒(méi)有數(shù)據(jù)返回為空數(shù)組 return JSON.parse(localStorage.getItem('data')) || [] }
存儲(chǔ)data中的數(shù)據(jù)
function setData(data) { // 存儲(chǔ)數(shù)據(jù)并把復(fù)雜數(shù)據(jù)類(lèi)型轉(zhuǎn)換成字符串類(lèi)型 localStorage.setItem('data', JSON.stringify(data)) }
封裝頁(yè)面渲染函數(shù)
function randerData() { // 渲染前先清空列表 $('tbody').empty() // 獲取數(shù)據(jù) var data = getData() // 遍歷data里面的對(duì)象元素,獲取對(duì)象元素里面的值 // item是數(shù)組里面的元素 data.forEach(function (item, i) { // 創(chuàng)建tr var tr = '<tr><td>' + item.username + '</td><td>' + item.sex + '</td><td>' + item.age + '</td><td><a href="javascript:;" rel="external nofollow" >刪除</a></td></tr>' // 在主體的末尾中添加tr $('tbody').append(tr) }) } // 頁(yè)面一打開(kāi)就開(kāi)始把本地存儲(chǔ)中的數(shù)據(jù)添加上去 randerData()
用事件委托給每個(gè)刪除鏈接綁定點(diǎn)擊刪除事件
// 不能直接獲取a $('tbody').on('click', 'a', function () { // 移除它的祖父元素tr $(this).parents('tr').remove() // 重新獲取數(shù)據(jù) setData(data) // 重新渲染 randerData() })
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于JQuery及AJAX實(shí)現(xiàn)名人名言隨機(jī)生成器
這篇文章主要為大家詳細(xì)介紹了基于JQuery及AJAX實(shí)現(xiàn)名人名言隨機(jī)生成器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Jquery on方法綁定事件后執(zhí)行多次的解決方法
下面小編就為大家?guī)?lái)一篇Jquery on方法綁定事件后執(zhí)行多次的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06基于jquery實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)效果
這篇文章主要介紹了基于jquery實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)效果,需要的朋友可以參考下2015-12-12JQuery的read函數(shù)與js的onload不同方式實(shí)現(xiàn)
JQuery的read函數(shù)與js的onload,想必大家對(duì)這兩個(gè)方法都有所熟悉吧,接下來(lái)介紹一個(gè)實(shí)例用以上兩種方法各自實(shí)現(xiàn),感興趣的你可不要錯(cuò)過(guò)了哈,希望可以幫助到你2013-03-03jQuery插件FusionCharts繪制的3D環(huán)餅圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionCharts繪制的3D環(huán)餅圖效果,結(jié)合完整實(shí)例形式分析了jQuery使用FusionCharts載入xml格式數(shù)據(jù)繪制圖形的操作步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-04-04jQuery select自動(dòng)選中功能實(shí)現(xiàn)方法分析
這篇文章主要介紹了jQuery select自動(dòng)選中功能,結(jié)合實(shí)例形式分析了jQuery實(shí)現(xiàn)select響應(yīng)與級(jí)聯(lián)菜單顯示相關(guān)功能與操作技巧,需要的朋友可以參考下2016-11-11jQuery實(shí)現(xiàn)簡(jiǎn)單的回到頂部totop功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單的回到頂部totop功能,涉及jQuery事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10