首页 新闻 会员 周边 捐助

js获取链接的this的疑问

0
悬赏园豆:10 [已解决问题] 解决于 2014-08-06 13:51

今天写到一句html代码

html:

<a href="javascript:void(0)" onClick='deleteRow(this)' title="删除> Content </a>

JS:

一:

function deleteRow(a){
 alert($(a).html());
}

用这种方法可以成功地看到链接的内容

二:

function deleteRow(a){
 alert($(this).html());
}

这种方法无法获取链接内容,得到是undefine。我一直习惯用this获取,之前写过其他的也完好运行,就是这个一直无法获取,换成第一种写法就可以了。想不懂啊,求解释(如果是一时浏览器或者eclipse神经了那就认了,主要是想弄懂这两种方法是不是真的有所区别)

choseee的主页 choseee | 初学一级 | 园豆:153
提问于:2014-08-06 11:14
< >
分享
最佳答案
0

“一”中,a是deleteRow函数传递过来过来的this,这个this代表a标签本身。如果用html能取到a的内容。
“二”中,用的是this,这个this表示函数的执行作用域,在你的这段代码里,this=window。所以对window进行包装,然后取html就取不到值。

收获园豆:10
幻天芒 | 高人七级 |园豆:37207 | 2014-08-06 11:37

哦,提到作用域我就有点懂了。我一直以为触发事件时,一定会把对象传进去,就像event一样,就算不传,方法中一样可以获取到。看来理解错了。谢谢啦

choseee | 园豆:153 (初学一级) | 2014-08-06 13:40

@choseee: :)

幻天芒 | 园豆:37207 (高人七级) | 2014-08-06 13:44

哦,提到作用域我就有点懂了。我一直以为触发事件时,一定会把对象传进去,就像event一样,就算不传,方法中一样可以获取到。看来理解错了。谢谢啦

测试了一下,第二种方法this.close()可以关闭窗口,确实是window

choseee | 园豆:153 (初学一级) | 2014-08-06 13:51
其他回答(1)
0

你可以在alert($(this).html());前面加上:console.log(this);

用调试模式看看this是什么东东就知道了

乐享程序员 | 园豆:930 (小虾三级) | 2014-08-06 12:32

至于原因嘛,就是楼上所说

支持(0) 反对(0) 乐享程序员 | 园豆:930 (小虾三级) | 2014-08-06 12:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册