很抱歉打擾您,但我已經花了兩個小時來解決這個問題。問題是我的程式碼只添加了一個元素,但沒有添加其他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) 也沒幫助
P粉3641297442024-04-04 11:01:12
戴夫牛頓提出了一個有用的觀點,邏輯似乎落後,但如果這是你嘗試讓它工作的結果:
當您使用 data
函數時,jQuery 會進行資料操作,它不僅僅為您提供匹配的 data-id
屬性的字串值。如果屬性的文字都是數字,jQuery 會將其轉換為數字:
const id = $("#example").data("id"); console.log(typeof id); // number
<div id="example" data-id="123"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>