2013-10-15 1 views
1

Это HTML:Как удалить элемент в массиве с помощью javascript?

<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 
}); 

Я хочу, чтобы нажать на кнопку, и в конечном счете определенное значение будет вставлено в массив, который я сделал. Но я также создал кнопку закрытия, и когда я нажимаю на нее, я хочу удалить вставленное значение из массива.

+0

product_id.pop()? –

+1

Array.splice() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice – xmashallax

+1

У вас не должно быть нескольких элементов с одним и тем же идентификатором. Вместо этого используйте класс. – Bergi

ответ

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 ... это было бы по-другому.

0

Я предполагаю, что вы ищете функцию, как это:

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

http://jsfiddle.net/PC2JS/

0

у меня была аналогичная проблема, как это, когда я хотел, чтобы следить за асинхронными загрузки и которые прогресс бар, чтобы удалить когда элемент завершил загрузку. Возможно, это не то, что вы ищете, но оно может отправить вас в правильном направлении. Вы можете попробовать своего рода метод словаря, как в следующем:

var arr = [] 

Добавление в массив будет выглядеть

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

Затем, если вы хотите удалить из массива

delete arr[uid]; 

Если у вас хотите пройти итерацию через это вы можете:

for (var key in arr) { 
    value = arr[key]; 
    console.log(value); 
} 
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 (п) удалить конкретный индекс, например array.pop (0) удалит первый элемент из массива. Или массив.pop (2) удалить третий вещь. Опять же, это не сфокусировано на производительности.

Смежные вопросы