Le code est le suivant :
$(function(){
$.ajax({
type:"GET",
url:"/msg",
success:function(data){
var html="";
for(var o of data){
html+=`
<tr>
<td>${o.mid}</td>
<td>${o.uname}</td>
<td>${o.content}</td>
<td>${o.pubtime}</td>
<td>
<a class="btn-del" href="${o.mid}">删除</a>
</th>
</tr>
`;
}
$("#tb1").html(html);
}
});
$("#tb1").on("click","a.btn-del",(e)=>{
e.preventDefault();
//var mid=this.getAttribute("href");
console.log(this);
});
});
Je dois lier l'événement de suppression à a.btn-del généré par la requête asynchrone, et je dois obtenir la valeur de l'attribut herf de l'élément actuellement cliqué, elle peut être obtenue via e.target ; ce. Après console.log(this), sortie #document.
N'est-ce pas dans le proxy d'événement pointant vers l'élément actuellement cliqué ? ?
Remplacez (e)=> {} par function(e){} et jetez un œil.
Vous devez d’abord comprendre le mécanisme de liaison de ceci.
Ceci dans la fonction flèche pointe vers la portée de la fonction externe.
Voici plusieurs façons d'appeler des fonctions js :
JS n'est pas un langage orienté objet. Par rapport à Java, la syntaxe de l'implémentation orientée objet est un peu étrange.
Si la fonction est appelée à l'aide de func(), la valeur de this dépend de l'objet dans lequel la fonction est appelée.
Lors de la définition de la fonction de rappel, si le paramètre this n'est pas transmis, il s'agit de la méthode d'appel de func(). La méthode d'écriture générale doit consister à utiliser une autre variable pour enregistrer la valeur de this, généralement le nom de la variable est self.
Si vous souhaitez appeler la méthode de jq, vous devez utiliser $(this) pour représenter l'objet jq