javascript
  • jquery
  • cookies
  • 2010-02-10 58 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); 
        ... 
    
    相关问题