jquery用this获取不到html行内绑定事件的元素 20

<html><buttontype='button'onclick='test(this)'name='btn'>按钮</button></htm><js>functio... <html>
<button type='button' onclick='test(this)' name='btn'>按钮</button>
</htm>

<js>
function test(){
var name= $(this).attr('name'); //这里用this获取不到html行间绑定事件的对象
} //但是如果是用addEventListener('click',test)绑定的
</js> //用this就能获取到button的name属性

//我想问一下,html行内绑定的事件,调用函数test,在test函数中this的指向谁的?
展开
 我来答
找红太郎的灰灰
2017-02-08 · TA获得超过285个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:189万
展开全部
<html>
<script type="text/javascript">  //JS必须写在这个标签下,这个标签必须在HTML标签下
function test(but){   //函数必须有入参才能接收你传入的参数
                   var name= but.name;  //name属性是对象本身就有的属性,可以直接取。
   alert(name); 
}   
</script>                                       
<button type='button' onclick='test(this)' name='btn'>按钮</button>
</html>
追问
我的意思是:为什么 在行间绑定的事件,this指向的是window, 而用js绑定的事件,this指向的是对象本身。(这个跟test有没有参数没关系吧,没参数也能调用this)
因为我的页面上有2种button,一种是在行间绑定的事件,一种是用addEventListener('click',test)绑定的事件,所以想让this都指向对象本身
我是我的阿飞仔
2017-02-22
知道答主
回答量:15
采纳率:0%
帮助的人:3.9万
展开全部
因为写在function里的this,作用在全局环境中,所以是window。
而绑定了监听事件后,他作用在对象上,所以this,指代的是你监听的dom对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式