javascript - ce problème de pointage dans la liaison d'événements jquery
習慣沉默
習慣沉默 2017-06-26 10:57:25
0
4
807

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é ? ?

習慣沉默
習慣沉默

répondre à tous(4)
巴扎黑

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 :

var func = function(a,b){
    console.log(this); 
    console.log(a + ' ' + b)
};

var self = 'test';
func(1,2);   // this 是 window 对象, 因为此时调用函数的是window对象
func.call(self,1,2);  // this是 字符串  'test'
func.apply(self,[1,2]); // this是 字符串  'test'

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.

var self = this;
XXXX.callback = function(){
    console.log(self);
};
给我你的怀抱

Si vous souhaitez appeler la méthode de jq, vous devez utiliser $(this) pour représenter l'objet jq

扔个三星炸死你
获取href :

 this.hash 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal