2014-10-26 3 views
0

У меня есть функция щелчка, чтобы составить список выбранных элементов. Кроме того, я нажимаю выбранные элементы на массив. В этой части нет проблемы, вот функция.удаление щелчка элемента из массива в javascript

$('#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()); 
    }; 
}); 

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

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


    $(this).remove(); 

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

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

}); 

Как я могу получить индекс щелкнутого элемента в списке?

+0

ID должен быть уникальным. Используйте Class для привязки событий для сбора элементов. Лучше, просто предоставьте скрипку –

ответ

1

Во-первых, либо вы делаете идентификатор элементов уникальным, либо используете класс вместо 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(); 
}); 
+0

спасибо за вашу помощь, она отлично работает! – user3235456

0

В функции, чтобы удалить щелкнул элемент из этого списка, внести следующие изменения:

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

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

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

}); 
+0

не работает – user3235456

0

Похоже, вы способ удаления элемента немного к сложному. Почему бы просто не использовать идентификатор uniqe для каждого добавляемого вами элемента и просто удалить элемент по его ID?