jqery中onclick="fun()"中的$(this)是什么

bingeng 2011-09-01 03:28:06
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function fun() {
alert($(this).length); // 1
alert($(this).val()); // 未定义
}
</script>
</head>
<body>
<input id="Button1" type="button" value="test" onclick="fun()"/>
</body>
</html>
...全文
699 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiling_tina 2011-09-03
  • 打赏
  • 举报
回复
this就是当前对象...document
在不同的情况下,$(this)表示不同的东西,也就是jquery包装集
最后一个菜鸟 2011-09-03
  • 打赏
  • 举报
回复
触发事件的DOM元素
sxw469499504 2011-09-03
  • 打赏
  • 举报
回复
this是window对象只能使用window对象的属性和方法
$(this)是jquery对象能使用jquery封装好的属性和方法
loxsam 2011-09-02
  • 打赏
  • 举报
回复
this是引发动作的对象,因为onclick是在#Button1上,所以this就是#Botton1这个DOM对象,而$(this)只是将DOM element包装成jQuery对象,DOM element只能用原生js方法,jQuery对象只能用jQuery方法
liangws 2011-09-02
  • 打赏
  • 举报
回复
function Person(){
this.name="csdn";
}

var obj = Person(); //this 绑定在window上
var obj = new Person(); //this 绑定在当前对象

onclick="Person()" // 与var obj = Person()一样
001007009 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 foolbirdflyfirst 的回复:]
引用 18 楼 calmcrime 的回复:

引用 17 楼 foolbirdflyfirst 的回复:
....
看来很多同学有必要复习下javascript里this的含义。
去掉jQuery调用,fun定义改成

HTML code
<script>
function fun(){
alert(this)
}
</script>
<input id="Button……
[/Quote]

娃哈哈。
foolbirdflyfirst 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 calmcrime 的回复:]

引用 17 楼 foolbirdflyfirst 的回复:
....
看来很多同学有必要复习下javascript里this的含义。
去掉jQuery调用,fun定义改成

HTML code
<script>
function fun(){
alert(this)
}
</script>
<input id="Button1" type="button" value="t……
[/Quote]
哈哈,脱了jQuery这层马甲,哥马上就认出你来了。
001007009 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 foolbirdflyfirst 的回复:]
....
看来很多同学有必要复习下javascript里this的含义。
去掉jQuery调用,fun定义改成

HTML code
<script>
function fun(){
alert(this)
}
</script>
<input id="Button1" type="button" value="test" onclick="fun()"/>

……
[/Quote]

是window

哦,明白了,之所以上面
$(this).val() 为undefined。。。。
foolbirdflyfirst 2011-09-02
  • 打赏
  • 举报
回复
....
看来很多同学有必要复习下javascript里this的含义。
去掉jQuery调用,fun定义改成
<script>
function fun(){
alert(this)
}
</script>
<input id="Button1" type="button" value="test" onclick="fun()"/>

这时候this是什么?
001007009 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 bingeng 的回复:]
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function fun() {
alert($(this).length); // 1
alert($(this).val()); // 未定义
}
</script>
</……
[/Quote]


楼主是不是想问 为什么
alert($(this).length); // 1
alert($(this).val()); // 未定义


$() 是jquery的对象构造器,这里$(this)构造了一个jq对象,其length为1

alert($(this).val()); // 未定义 我也疑惑,为什么没取得 value="test" test值。。。

YeHuai1991 2011-09-02
  • 打赏
  • 举报
回复
$(this)相当于$("#Button1")
YeHuai1991 2011-09-02
  • 打赏
  • 举报
回复
$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。
dcyydc 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhuhong639 的回复:]
<input id="Button1" type="button" value="test" onclick="fun()"/>
这里调用fun方法之后,这个this对象就代表触发这个click事件的dom元素。
[/Quote]
就是这个了~
BLUE_LG 2011-09-01
  • 打赏
  • 举报
回复
当前操作对象,这里就是指$("#Button1")
jayrao5566 2011-09-01
  • 打赏
  • 举报
回复
$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。
sxlvzh 2011-09-01
  • 打赏
  • 举报
回复
(function(){
$("#Button1").click(function(){

})
})
小珩 2011-09-01
  • 打赏
  • 举报
回复
楼上都说清楚了,不过既然用JQuery,事件最好还是

$(function(){
$("#Button1").click(function(){

})
})

这样写比较好
MadEric 2011-09-01
  • 打赏
  • 举报
回复
this是window,5楼说的fun.call(this),this在fun()中才是button对象。
應燁軍 2011-09-01
  • 打赏
  • 举报
回复
$(this) 在事件中是指触发事件的元素的 JQuery 对象...
foolbirdflyfirst 2011-09-01
  • 打赏
  • 举报
回复
#1正解

fun() 改成 fun.call(this)绑定当前element就对了

<input id="Button1" type="button" value="test" onclick="fun.call(this)"/>


不过既然使用jquery,就应该用addEventListener/attachEvent 那套来绑定事件

(function($){
$('#Button1').click(function(e){

})
})(jQuery)
加载更多回复(3)

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧