suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – dieses Zeigeproblem bei der JQuery-Ereignisbindung

Der Code lautet wie folgt:


$(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);
                });
            });

Ich muss das Löschereignis an a.btn-del binden, das durch die asynchrone Anfrage generiert wurde, und ich muss den herf-Attributwert des aktuell angeklickten Elements abrufen. Er kann jedoch nicht über e.target abgerufen werden Das. Geben Sie nach console.log(this) #document.

aus

Zeigt der Event-Proxy nicht auf das aktuell angeklickte Element? ?

習慣沉默習慣沉默2790 Tage vor855

Antworte allen(4)Ich werde antworten

  • 巴扎黑

    巴扎黑2017-06-26 10:59:25

    你把 (e)=> {} 改成 function(e){} 看看。

    你应该先去了解下this的绑定机制。

    箭头函数中this是指向外层函数作用域。

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-26 10:59:25

    下面是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不是面向对象的语言,跟java比, 在实现面向对象上,语法上面是会有些奇怪。
    如果是以 func() 的方式调用函数, 则this的值取决于调用函数的是在哪个对象。
    在设置回调函数时,如果没有传this参数, 就是 func()的调用方式,一般的写法应该是用另外一个变量来保存this的值, 通常变量名为self。

    var self = this;
    XXXX.callback = function(){
        console.log(self);
    };

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:59:25

    如果要调用jq的方法,应该使用$(this)才代表的是jq对象

    Antwort
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:59:25

    获取href :
    
     this.hash 

    Antwort
    0
  • StornierenAntwort