jQuery利用cookie 實(shí)現(xiàn)本地收藏功能(不重復(fù)無(wú)需多次命名)
1、cookie是什么:
①、cookie 是存儲(chǔ)于訪(fǎng)問(wèn)者計(jì)算機(jī)中的變量。每當(dāng)一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器來(lái)訪(fǎng)問(wèn)某個(gè)頁(yè)面時(shí),那么就可以通過(guò) JavaScript 來(lái)創(chuàng)建和讀取 cookie。
?、?、實(shí)際上 cookie 是存于用戶(hù)硬盤(pán)的一個(gè)文件,這個(gè)文件通常對(duì)應(yīng)于一個(gè)域名,當(dāng)瀏覽器再次訪(fǎng)問(wèn)這個(gè)域名時(shí),便使這個(gè)cookie可用。因此,cookie可以跨越一個(gè)域名下的多個(gè)網(wǎng)頁(yè),但不能跨越多個(gè)域名使用。
?、?、不同瀏覽器對(duì) cookie 的實(shí)現(xiàn)也不一樣。即保存在一個(gè)瀏覽器中的 cookie 到另外一個(gè)瀏覽器是 不能獲取的。
PS:cookie 和 session 都能保存計(jì)算機(jī)中的變量,但是 session 是運(yùn)行在服務(wù)器端的,而客戶(hù)端我們只能通過(guò) cookie 來(lái)讀取和創(chuàng)建變量。
2、cookie的作用:
?、佟⒂脩?hù)在第一次登錄某個(gè)網(wǎng)站時(shí),要輸入用戶(hù)名密碼,如果覺(jué)得很麻煩,下次登錄時(shí)不想輸入了,那么就在第一次登錄時(shí)將登錄信息存放在 cookie 中。下次登錄時(shí)我們就可以直接獲取 cookie 中的用戶(hù)名密碼來(lái)進(jìn)行登錄。
PS:雖然 瀏覽器將信息保存在 cookie 中是加密了,但是可能還是會(huì)造成不安全的信息泄露
?、凇㈩?lèi)似于購(gòu)物車(chē)性質(zhì)的功能,第一次用戶(hù)將某些商品放入購(gòu)物車(chē)了,但是臨時(shí)有事,將電腦關(guān)閉了,下次再次進(jìn)入此網(wǎng)站,我們可以通過(guò)讀取 cookie 中的信息,恢復(fù)購(gòu)物車(chē)中的物品。
PS:實(shí)際操作中,這種方法很少用了,基本上都是將這些信息存儲(chǔ)在數(shù)據(jù)庫(kù)中。然后通過(guò)查詢(xún)數(shù)據(jù)庫(kù)的信息來(lái)恢復(fù)購(gòu)物車(chē)?yán)锏奈锲?br />
③、頁(yè)面之間的傳值。在實(shí)際開(kāi)發(fā)中,我們往往會(huì)通過(guò)一個(gè)頁(yè)面跳轉(zhuǎn)到另外一個(gè)頁(yè)面。后端服務(wù)器我們可以通過(guò)數(shù)據(jù)庫(kù),session 等來(lái)傳遞頁(yè)面所需要的值。但是在瀏覽器端,我們可以將數(shù)據(jù)保存在 cookie 中,然后在另外頁(yè)面再去獲取 cookie 中的數(shù)據(jù)。
PS:這里要注意 cookie 的時(shí)效性,不然會(huì)造成獲取 cookie 中數(shù)據(jù)的混亂。
正文開(kāi)始,下面通過(guò)代碼給大家介紹jq cookie 本地收藏功能,
JS核心部分
說(shuō)明:用split(',')分隔字符串轉(zhuǎn)換數(shù)組數(shù)組,把上一次收藏的id 和這一次的收藏用 + “,”+ 當(dāng)前id 來(lái)存入,到時(shí)候用split() 方法 轉(zhuǎn)換成數(shù)組即可。
<script type="text/javascript">
$(function(){
var arr = $.cookie("attractionsid").split(',');
console.log($.cookie());
for (var i = 0; i < arr.length; i++) {
if(parseInt(arr[i]) == parseInt( 請(qǐng)?zhí)钊隝D值 )){
//判斷是否收藏過(guò),收藏過(guò)亮圖標(biāo)
$('#shoucang2').removeClass('hide');
$('#shoucang1').addClass('hide');
break;
}
};
$("#shoucang").click(function(event) {
var judge = true;
console.log(arr)
for (var i = 0; i < arr.length; i++) {
if(parseInt(arr[i]) == parseInt(請(qǐng)?zhí)钊隝D值)){
arr.splice(i,1);
$.cookie("attractionsid", arr, { expires: 361});
console.log('取消收藏');
$('#shoucang2').addClass('hide');
$('#shoucang1').removeClass('hide');
judge = false;
break;
}
};
if(judge){
$.cookie("attractionsid", $.cookie("attractionsid") + ","+"請(qǐng)?zhí)钊隝D值", { expires: 361});
console.log('收藏成功');
$('#shoucang2').removeClass('hide');
$('#shoucang1').addClass('hide');
}
});
})
</script>
總結(jié)
以上所述是小編給大家介紹的jQuery利用cookie 實(shí)現(xiàn)本地收藏功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
jQuery實(shí)現(xiàn)錨點(diǎn)向下平滑滾動(dòng)特效示例
下面小編就為大家?guī)?lái)一篇jQuery實(shí)現(xiàn)錨點(diǎn)向下平滑滾動(dòng)特效示例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
基于Jquery的文字滾動(dòng)跑馬燈插件(一個(gè)頁(yè)面多個(gè)滾動(dòng)區(qū))
文字逐行或多行滾動(dòng)跑馬燈插件,基于Jquery。命名為Jquery.RollTitle。支持在一個(gè)頁(yè)面聲明多個(gè)滾動(dòng)區(qū) (就為了要這點(diǎn)才寫(xiě)了這個(gè))2010-07-07
Javascript 驗(yàn)證上傳圖片大小[客戶(hù)端]
在做上傳圖片的時(shí)候,如果不限制上傳圖片大小,后果非常的嚴(yán)重。那么我們?cè)鯓硬趴梢越鉀Q一個(gè)棘手的問(wèn)題呢?2009-08-08
輕松使用jQuery雙向select控件Bootstrap Dual Listbox
這篇文章主要教大家如何輕松使用jQuery雙向select控件Bootstrap Dual Listbox,感興趣的小伙伴們可以參考一下2015-12-12
基于jQuery實(shí)現(xiàn)的查看全文功能【實(shí)用】
本文分享了利用jQuery實(shí)現(xiàn)的查看全文功能:文本內(nèi)容少于四行,不顯示查看全文;超過(guò)五行時(shí)才顯示出來(lái)并有此功能;很實(shí)用,下面就跟小編一起來(lái)看看吧2016-12-12
jQuery實(shí)現(xiàn)的可編輯表格完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的可編輯表格,結(jié)合完整實(shí)例形式分析了jQuery響應(yīng)鼠標(biāo)事件動(dòng)態(tài)操作頁(yè)面元素樣式與屬性的相關(guān)技巧,需要的朋友可以參考下2016-06-06
jquery實(shí)現(xiàn)Ajax請(qǐng)求的幾種常見(jiàn)方式總結(jié)
這篇文章主要介紹了jquery實(shí)現(xiàn)Ajax請(qǐng)求的幾種常見(jiàn)方式,結(jié)合實(shí)例形式總結(jié)分析了jQuery實(shí)現(xiàn)ajax請(qǐng)求常用的load()、post()、get()及Ajax()方法相關(guān)操作技巧,需要的朋友可以參考下2019-05-05

