Lorsqu'une version de chaîne d'une fonction est appelée, comme dans onclick="deleteImg(id)"
il exécute dans le contexte mondial, ce qui signifie qu'il cherche essentiellement pour:
window.deleteImg
Mais il n'y est pas, il est défini que dans votre document.ready
portée du gestionnaire. Vous êtes mieux lier le gestionnaire directement, comme ceci:
$(function(){
$.ajax({
success: function(id) {
$("<a href='#'></a>").click(function() {
deleteImg(id);
}).appendTo('#ele');
}
})
function deleteImg(id) {
//foo...
}
});
Ou, stocker des données sur l'élément s'il est utilisé pour d'autres choses, comme ceci:
$("<a href='#'></a>").data('id', id).click(function() {
deleteImg($.data(this, 'id'));
}).appendTo('#ele');
Ou, combiner tous, et y accéder ainsi:
$(function(){
$.ajax({
success: function(id) {
$("<a href='#'></a>").data('id', id).click(deleteImg).appendTo('#ele');
}
})
function deleteImg() {
var id = $.data(this, 'id');
//foo...
}
});
bonne réponse .... + 1 –
fonctionne mieux maintenant! grâce à tous! :-) – Roberto
+1, (* mais vous devez échapper à vos citations ou utiliser des simples à l'extérieur .., juste nitpicking .. *) –