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.
ausZeigt der Event-Proxy nicht auf das aktuell angeklickte Element? ?
你把 (e)=> {} 改成 function(e){} 看看。
你應(yīng)該先去了解下this的綁定機(jī)制。
箭頭函數(shù)中this是指向外層函數(shù)作用域。
下面是js函數(shù)調(diào)用的幾種方式:
var func = function(a,b){
console.log(this);
console.log(a + ' ' + b)
};
var self = 'test';
func(1,2); // this 是 window 對(duì)象, 因?yàn)榇藭r(shí)調(diào)用函數(shù)的是window對(duì)象
func.call(self,1,2); // this是 字符串 'test'
func.apply(self,[1,2]); // this是 字符串 'test'
js不是面向?qū)ο蟮恼Z(yǔ)言,跟java比, 在實(shí)現(xiàn)面向?qū)ο笊?語(yǔ)法上面是會(huì)有些奇怪。
如果是以 func() 的方式調(diào)用函數(shù), 則this的值取決于調(diào)用函數(shù)的是在哪個(gè)對(duì)象。
在設(shè)置回調(diào)函數(shù)時(shí),如果沒(méi)有傳this參數(shù), 就是 func()的調(diào)用方式,一般的寫(xiě)法應(yīng)該是用另外一個(gè)變量來(lái)保存this的值, 通常變量名為self。
var self = this;
XXXX.callback = function(){
console.log(self);
};