1) <a href="#",id="deleteMake",
- в HTML-теге не должно быть запятых.Замените запятые пробелами.
2) Чтобы установить обработчик на месте, а не в последующем блоке:
.append(
$('<li class="list-group-item"></li>')
.append(
$('<a href="#"></a>')
.on('click',function(e){
alert(makes._id);
// You don't actually want the browser scrolling to #
e.preventDefault();
})
.append('<i class="fa fa-trash" ></i>')
)
)
Если вы оставите код в своем стиле, то вы можете прикрепитьсобытие вроде этого:
$("ul#makes")
.append(
$(
'<li class="list-group-item">' +
makes.makeName +
' <a href="#" id="deleteMake">d</a>' +
"</li>"
)
.on('click','#deleteMake',function(
alert(makes._id);
// You don't actually want the browser scrolling to #
e.preventDefault();
)
);
В вашем коде события также прикрепляются до того, как будет сгенерировано содержимое, потому что обратный вызов результата XHR наверняка произойдет после того, как основной поток завершит выполнение.Эта проблема не возникает ни с одним из приведенного выше кода.Если вы ДОЛЖНЫ установить обработчики до генерации контента, используйте делегирование .on ():
$("ul#makes").on("click", "#deleteMake", function(e){
alert($(this).data('id'));
// You don't actually want the browser scrolling to #
e.preventDefault();
});