很抱歉打扰您,但我已经花了两个小时来解决这个问题。问题是我的代码只添加了一个元素,但没有添加其他id,写的是“已经有”
$(function(){ $(".js-compare-add").click(function(){ var item_id = $(this).data('id'); if(Cookies.get('compare_id_list')){ var compareListStr = Cookies.get('compare_id_list'); var compareListArr = compareListStr ? compareListStr.split(',') : []; if (compareListArr.indexOf(item_id) > -1) { compareListArr.push(item_id); Cookies.set('compare_id_list', compareListArr.join(','), {expires: 10}); alert('Save! ' + item_id); } else { alert('already have ' + item_id); } } else { alert('There was no list, we created it and added this position ' + item_id); Cookies.set('compare_id_list', item_id); } }); });
以防万一 - 我用它来做 cookies https://github.com/js-cookie/js-cookie if (jQuery.inArray(item_id,compareListArr) === -1) 也没有帮助
戴夫·牛顿提出了一个有用的观点,逻辑似乎落后,但如果这是你尝试让它工作的结果:
当您使用
data
函数时,jQuery 会进行数据操作,它不仅仅为您提供匹配的data-id
属性的字符串值。如果属性的文本都是数字,jQuery 会将其转换为数字: