Подобно тому, что говорят другие, id
должно быть зарезервировано только для одноразового использования.
Кроме того, когда вы динамически создаете элементы, вы даете каждому onClick
строку "removeFruit(list[i].toString())"
, поэтомуна самом деле он не ищет функцию с именем removeFruit, но вместо этого имеет фактическую строку «removeFruit».
При создании html
вы можете вместо этого присвоить каждому элементу атрибут fruitName
, равный названию фрукта, напримертак.
list = ["apple", "strawberry", "banana"]
for (var i = 0; i < list.length; i++) {
$("#listContents").append('<div>' + list[i] + '<span class="picker" fruitName='+ list[i] + '>(X)</span></div>');
}
и затем мы можем настроить таргетинг на них, используя прослушиватель щелчков, а не onClick
и использовать то, чему равен fruitName
, используя $(this).attr('fruitName')
.
$("#listContents").on('click', '.picker', function(e) {
removeFruit($(this).attr('fruitName'))
})
function removeFruit(fruit) {
console.log('You clicked ' + fruit);
}
$(this)
будет отображаться в зависимости от того, на какой интервал вы щелкнули, и .attr()
будет искать fruitName
и найдет то, чему он равен.