如果ID已在列表中,则不允许添加产品

时间:2013-05-07 14:23:20

标签: javascript split

我在javascript中制作一个简单的购物车类型的东西,基本上我只想要允许添加每个项目中的一个。我有以下代码,我的计划是拆分myID然后循环以查看该数字是否已经存在但是它在分裂时落空而我不确定这是否是真正做到这一点的最佳方式。

继承我所拥有的,任何帮助都将非常感激。感谢

  

var myIDs;

jQuery(".selectItem").click(function () {

    if (myIDs) {
        var split = myIDs.split(",");
        alert(split[0]);
    }
    addToCart(jQuery(this).data('id'));
});

function addToCart(id) {

    jQuery.ajax({
        type: "GET",
        url: "feeds/prodxml.aspx?id=" + id,
        dataType: "xml",
        success: function (xml) {
            jQuery(xml).find('Product').each(function () {
                var sTitle = jQuery(this).find('Name').text();
                var sPublisher = jQuery(this).find('Description').text();
                jQuery("<li></li>").html(sTitle + ", " + sPublisher).appendTo("#addedItem ul");
                jQuery('.hide-on-click').remove();
                addItem(id);
            });
        },
        error: function () {
            alert("An error occurred while processing XML file.");
        }
    });


}

function addItem(itemID) {
    if (!myIDs) {
        myIDs = itemID;
    } else {
    myIDs = myIDs + "," + itemID;
    }
    alert(myIDs);
    }

2 个答案:

答案 0 :(得分:0)

您可以将myID设为数组而不是字符串。

var myIDs = [];

然后您可以将检查修改为

jQuery(".selectItem").click(function () {
if(jQuery.inArray(jQuery(this).data('id'), myIDs){
    var split = myIDs.split(",");
    alert(split[0]);
}
addToCart(jQuery(this).data('id'));

});

function addItem(itemID) {
  myIds.push(itemID);
}

答案 1 :(得分:0)

jQuery的inArray功能可以为您完成此任务。

请参阅:Jquery, checking if a value exists in array or not