javascript
  • jquery
  • cookies
  • 2010-02-10 110 views 13 likes 
    13

    我使用"Cookie Plugin" by Klaus Hartl$(document).ready上添加或更新cookie。我有另一個應該迭代所有cookie的事件,並對每個cookie的值做些事情。我如何迭代cookie的集合並獲取每個cookie的id和值?如何使用jquery(或JavaScript)迭代cookie?

    我想是這樣的:

    $.cookie.each(function(id, value) { 
          alert('ID='+id+' VAL='+value); 
         }); 
    

    回答

    18

    如果你只是想看看它並不難沒有額外的餅乾插件:

    $.each(document.cookie.split(/; */), function() { 
        var splitCookie = this.split('='); 
        // name is splitCookie[0], value is splitCookie[1] 
    }); 
    
    +0

    優秀的解決方案。用正則表達式分割好得多。 – 2010-02-10 19:18:11

    +1

    除第一行中的函數定義外,其他都正確。更改函數(cookieString)的功能(索引,cookieString),你已經得到它! – 2010-02-10 21:33:23

    +1

    哦對 - 對不起!此外,我認爲jQuery將「this」綁定到每個元素,因此您也可以將它關閉,並在該函數內部將「this」分開。 – Pointy 2010-02-10 21:37:31

    3

    以及它在普通的JavaScript相當容易:

    var keyValuePairs = document.cookie.split(';'); 
    for(var i = 0; i < keyValuePairs.length; i++) { 
        var name = keyValuePairs[i].substring(0, keyValuePairs[i].indexOf('=')); 
        var value = keyValuePairs[i].substring(keyValuePairs[i].indexOf('=')+1); 
    } 
    
    +1

    小心領先位置!你應該用正則表達式來分割/; * /而不只是字符串';'。 – Pointy 2010-02-10 19:11:10

    +0

    很對,謝謝指出,點 – 2010-02-10 22:12:31

    +0

    我喜歡這個解決方案,因爲它允許cookie值中的等號。 – spb 2011-11-11 19:08:14

    0

    另一種解決方案的確在名稱前面創建了空白區域,這使得難以調試錯誤。

    var keyValuePairs = document.cookie.split(/; */); 
    for(var i = 0; i < keyValuePairs.length; i++) { 
        var name = keyValuePairs[i].substring(0, keyValuePairs[i].indexOf('=')); 
        var value = keyValuePairs[i].substring(keyValuePairs[i].indexOf('=')+1); 
        ... 
    
    相關問題