2016-05-30 52 views
2

所有的cookie使用我jquery cookie插件,这里是我的代码:找到名字是

$('.Bookmark').click(function() { 
    var id = $(this).attr('rel'); 
    if ($(this).hasClass('RedHeart')) { 
     $(this).removeClass('RedHeart'); 
     $.removeCookie('Bookmarkid_' + id, id); 
     $(this).attr('title', 'Add'); 
    } else { 
     $(this).addClass('RedHeart'); 
     $.cookie('Bookmarkid_' + id, id, { expires: 3650 }); 
     $(this).attr('title', 'remove'); 
    } 
}); 

$('.Bookmark').each(function() { 
    var id = $(this).attr('rel'); 
    var $this = $(this); 
    if ($.cookie('Bookmarkid_' + id) == id) { 
     $this.addClass('RedHeart'); 
     $this.attr('title', 'remove'); 
    } 
}); 

我不知道我怎样才能找到一个相似名称的所有cookies。比如我设置设置3块饼干这些名字:

Bookmarkid_3132509 
Bookmarkid_3432502 
Bookmarkid_4433342 

现在我想找到并返回与Bookmarkid_名字开始所有的cookies。我需要的是这样的:

if ($.cookie().indexOf("Bookmarkid_") === 0) { 
    alert('yes') 
} 

编辑:它没有复制,而不是与该主题相关,仍然没有解决我的问题!

+0

@Satpal我尝试过,不解决我的问题!我认为这与我的问题无关,但是你把它标记为重复的!我的问题还没有解决。 – Pedram

+1

我已经重新打开它,试试'if(Object.keys($。cookie())。some(function(k){return〜k.indexOf(“Bookmarkid_”)})){//它有Bookmarkid_property } ' – Satpal

回答

2

读取所有可用的cookie: $.cookie(); // => { "name": "value" }

所以

Object.keys($.cookie()).forEach(function(cookieName) { 
    if (cookieName.indexOf("Bookmarkid_") === 0) { 
    alert('yes') 
    } 
}); 

// next one return you only filtered cookies 
Object.keys($.cookie()).reduce(function(collector, cookieName) { 
    if (cookieName.indexOf("Bookmarkid_") === 0) { 
    collector[cookieName] = $.cookie(cookieName); 
    } 
    return collector; 
}, {}); 

// to filter cookies Names 
Object.keys($.cookie()).filter(function(cookieName) { 
    return cookieName.indexOf('Bookmarkid_') === 0; 
}); 
+0

谢谢,只是一个额外的问题,我怎样才能返回这些全名饼干?我的意思是返回'Bookmarkid_3132509'' Bookmarkid_3432502'' Bookmarkid_4433342'例如在一个数组中。 – Pedram

+1

@pedram检查更新了答案 –

+0

感谢您的帮助和解答 – Pedram