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://m.propowerdrill.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);}); });
我需要給異步請求生成的a.btn-del綁定刪除事件,需要獲取當前點擊元素的herf屬性值;通過e.target可以或得;但是通過this,不可以。console.log(this)后 ,輸出#document.
難道事件代理中this不是指向當前點擊的元素嗎??
問題解答
回答1:你把 (e)=> {} 改成 function(e){} 看看。
你應該先去了解下this的綁定機制。
箭頭函數中this是指向外層函數作用域。
回答2:下面是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);};回答3:
如果要調用jq的方法,應該使用$(this)才代表的是jq對象
回答4:獲取href : this.hash
相關文章:
1. html5和Flash對抗是什么情況?2. index.php錯誤,求指點3. 手動啟動mysql服務出錯,1067錯誤,如何解決呢?4. 百度地圖api - Android 百度地圖點擊線路圖的問題?5. javascript - ueditor 百度富文本編輯器6. javascript - 為什么當index等于5的時候,不在當前頁面跳轉到百度?不跳轉的代碼在倒數第五行7. 這是什么情況???8. javascript - 我寫的href跳轉地址不是百度,為什么在有的機型上跳轉到百度了,有的機型跳轉正確9. 在應用配置文件 app.php 中找不到’route_check_cache’配置項10. 跟著課件一模一樣的操作使用tp6,出現了錯誤
