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='https://www.haobala.com/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. golang - 用IDE看docker源码时的小问题2. 在windows下安装docker Toolbox 启动Docker Quickstart Terminal 失败!3. 表单提交验证,没反应,求老师指点4. mysqli更新不了数据5. 求一个python往kafka写json数据的例子6. mysql5.7就没有官方性质的详细配置文件吗?求大神告知7. javascript - 如何使用Canvas改变素材的颜色?8. node.js - session怎么存到cookie,然后服务器重启后还能获取。数据库不用mongodb或redis,数据库是mysql9. 在应用配置文件 app.php 中找不到’route_check_cache’配置项10. python - 有哪些预测算法可以根据实时增量数据更新算法并预测后续数据?

网公网安备