在javascript中从数组中删除单击的项目

时间:2014-10-26 09:21:35

标签: javascript jquery arrays indexing splice

我有一个点击功能来列出所选项目。此外,我将所选项目推送到一个数组。这部分没有问题,这是功能。

$('#addToCartButton2').click(function(){  

    var toAdd=$("#chooseItem2 option:selected").text();
    var itemNbr2=$("#itemNbr2").val();

    if(toAdd !== defaultSelectFormText && itemNbr2 >=1){
        $('#defaultText').remove();
        $('.col-md-5').append('<p id="items">' + itemNbr2 + ' Adet ' + toAdd + '<span class="extra">Sipariş listesinden çıkarmak için tıklayın!</span>' + '</p>');
        ordersArray.push(itemNbr2 + ' Adet ' + toAdd);
        alert(ordersArray.toString());
    };
});

但我也有一个功能可以从该列表中删除被点击的项目。所以我想在单击时从数组中删除该项。我试图使用splice方法,但我无法获得所点击项目的索引。这是删除功能。

$(document).on('click', '#items', function() {


    $(this).remove();

    var index = ordersArray.indexOf($(this).val());

    alert(index);
    if (index > -1) {
        ordersArray.splice(index, 1);
    }

}); 

如何获取列表中单击项目的索引?

3 个答案:

答案 0 :(得分:1)

首先,您要么将项目ID设为唯一,要么使用class而不是id,就像我在此解决方案中所做的那样。

$('#addToCartButton2').click(function(){  

    var toAdd=$("#chooseItem2 option:selected").text();
    var itemNbr2=$("#itemNbr2").val();

    if(toAdd !== defaultSelectFormText && itemNbr2 >=1){
        $('#defaultText').remove();
        $('.col-md-5').append('<p class="items"><span>' + itemNbr2 + ' Adet ' + toAdd + '</span><span class="extra">Sipariş listesinden çıkarmak için tıklayın!</span>' + '</p>');
        ordersArray.push(itemNbr2 + ' Adet ' + toAdd);
        alert(ordersArray.toString());
    };
});

$(document).on('click', '.items', function() {

    var index = ordersArray.indexOf($('span:first', this).text());

    alert(index);
    if (index > -1) {
        ordersArray.splice(index, 1);
    }

    $(this).remove();
}); 

答案 1 :(得分:0)

在从该列表中删除所点击的项目的功能中,进行以下更改:

$(document).on('click', '#items', function() {

    var index = ordersArray.indexOf($(this).text());

    alert(index);
    if (index > -1) {
        ordersArray.splice(index, 1);
    }
    $(this).remove();

});

答案 2 :(得分:0)

看起来你删除这个项目的方式有点复杂。 为什么不为你要追加的每个项目使用uniqe ID,只是删除 该项目的ID是什么?