1

这是html:

<button id="btn1">CLICK 1</button>
<button id="btn2">CLICK 2</button>
<div id="show"></div>

这是javascript:

product_id = new Array();
$("#btn").on('click', function () {
    $("#show").append("<div><button type='button' id='btn1x' class='close pull-right' aria-hidden='true'>&times;</button>" + "<pre>button 1</pre></div>");

    product_id.push("btn1");
    alert(product_id);
});

$(document).on('click', 'button#btn1x', function () {
    $(this).parent().remove();
    alert(product_id);
    //when I click this button, i want to remove the "btn1" that I pushed a while ago from my array 
});


$("#btn2").on('click', function () {
    $("#show").append("<div><button type='button' id='btn2x' class='close pull-right' aria-hidden='true'>&times;</button>" + "<pre>button 2</pre></div>");

    product_id.push("btn2");

});

$(document).on('click', 'button#btn2x', function () {
    $(this).parent().remove();
    //when I click this button, i want to remove the "btn2" that I pushed a while ago from my array 
});

我想单击按钮,最终将在我创建的数组中插入某个值。但是,我还创建了一个关闭按钮,当我单击它时,我想从数组中删除插入的值。

4

4 回答 4

0

使用 .pop(),所有常规的 javascript 函数都可以在 jQuery 中使用。
http://learn.jquery.com/javascript-101/arrays/

给定一个数组:

var array = [1,2,3,5];
array.push(9); // [1,2,3,5,9]
array.pop(); // [1,2,3,5]

现在,如果您想删除 2 ...那会有所不同。

于 2013-10-15T22:43:50.477 回答
0

我猜你正在寻找这样的功能:

removeProduct = function(item) {
    var n = product_id.indexOf(item);
    if(n >= 0)
        product_id.splice(n, 1);
}

http://jsfiddle.net/PC2JS/

于 2013-10-15T22:55:58.333 回答
0

html:

<button id="btn1" class="adder">CLICK 1</button>
<button id="btn2" class="adder">CLICK 2</button>
<div id="show"></div>

javascript:

$('button.adder').on('click',

function () {
    var aid = $(this).attr('id');

    $('#show').append('<div><button class="removable" style="height: 30px;">' + aid + '</button></div>');

});

$('div#show').on('click', 'div button.removable',

function () {
    //console.log(this);
    $(this).remove();

    console.log($('div#show').children());
});

如果你想要这种行为,你可以做这样的事情。如果您需要其他地方的信息(并且不关心性能),您可以使用$('div#show').children()来获取当前列表。

在http://jsfiddle.net/eWtNN/8/上测试过,它可以工作。

或者,如果您关心数组列表的行为,您可以使用array.pop(n)删除特定索引,例如array.pop(0)将从数组中删除第一项。或array.pop(2)删除第三项。同样,这并不关注性能。

于 2013-10-15T23:08:10.367 回答
0

当我想跟踪异步上传以及元素完成上传时要删除的进度条时,我遇到了类似的问题。这可能不是您正在寻找的东西,但它可能会引导您朝着正确的方向前进。您可以尝试一种字典方法,如下所示:

var arr = []

添加到数组看起来像

arr[uid] = value;
console.log(arr);

然后如果你想从数组中删除

delete arr[uid];

如果你想遍历你可以这样做:

for (var key in arr) { 
    value = arr[key];
    console.log(value); 
}
于 2013-10-15T22:57:27.243 回答