javascript - jquery事件綁定中的this指向問題
問題描述
代碼如下:
$(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 href='http://www.aoyou183.cn/wenda/${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);}); });
我需要給異步請(qǐng)求生成的a.btn-del綁定刪除事件,需要獲取當(dāng)前點(diǎn)擊元素的herf屬性值;通過e.target可以或得;但是通過this,不可以。console.log(this)后 ,輸出#document.
難道事件代理中this不是指向當(dāng)前點(diǎn)擊的元素嗎??
問題解答
回答1:你把 (e)=> {} 改成 function(e){} 看看。
你應(yīng)該先去了解下this的綁定機(jī)制。
箭頭函數(shù)中this是指向外層函數(shù)作用域。
回答2:下面是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言,跟java比, 在實(shí)現(xiàn)面向?qū)ο笊?語法上面是會(huì)有些奇怪。如果是以 func() 的方式調(diào)用函數(shù), 則this的值取決于調(diào)用函數(shù)的是在哪個(gè)對(duì)象。在設(shè)置回調(diào)函數(shù)時(shí),如果沒有傳this參數(shù), 就是 func()的調(diào)用方式,一般的寫法應(yīng)該是用另外一個(gè)變量來保存this的值, 通常變量名為self。
var self = this;XXXX.callback = function(){ console.log(self);};回答3:
如果要調(diào)用jq的方法,應(yīng)該使用$(this)才代表的是jq對(duì)象
回答4:獲取href : this.hash
相關(guān)文章:
1. mysql - 請(qǐng)問數(shù)據(jù)庫字段為年月日,傳進(jìn)的參數(shù)為月,怎么查詢那個(gè)月所對(duì)應(yīng)的數(shù)據(jù)2. node.js - win 下 npm install 遇到了如下錯(cuò)誤 會(huì)導(dǎo)致 無法 run dev么?3. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?4. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時(shí)間會(huì)消失是什么情況?5. [python2]local variable referenced before assignment問題6. Python2中code.co_kwonlyargcount的等效寫法7. html - 移動(dòng)端radio無法選中8. php - 微信開發(fā)驗(yàn)證服務(wù)器有效性9. javascript - vue+iview upload傳參失敗 跨域問題后臺(tái)已經(jīng)解決 仍然報(bào)403,這是怎么回事啊?10. mysql - 如何在有自增id的情況下,讓其他某些字段能不重復(fù)插入
