+ -
当前位置:首页 → 问答吧 → jqery中onclick="fun()"中的$(this)是什么

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

时间:2011-09-01

来源:互联网

<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>

作者: bingeng   发布时间: 2011-09-01

该回复于2011-09-01 15:34:34被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#2楼 得分:0回复于:2011-09-01 15:36:22
这里的this指的是IE的window对象,这是因为fun只是一个普通的函数。

$(this) 就是 window对象的jq包装集

作者: bingeng   发布时间: 2011-09-01

引用 2 楼 jinkuang45 的回复:

这里的this指的是IE的window对象,这是因为fun只是一个普通的函数。

$(this) 就是 window对象的jq包装集

一楼说的这种应该是函数不用于事件中的情况下,当i在<input>的点击事件中使用fun()的时候,$(this)是一个事件句柄,通过它可以得知触发这个事件的element元素的属性...!!

作者: jinkuang45   发布时间: 2011-09-01

<input id="Button1" type="button" value="test" onclick="fun()"/>
这里调用fun方法之后,这个this对象就代表触发这个click事件的dom元素。

作者: koo42636880   发布时间: 2011-09-01

#1正解

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

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


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

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

    })
})(jQuery)

作者: zhuhong639   发布时间: 2011-09-01

$(this) 在事件中是指触发事件的元素的 JQuery 对象...

作者: foolbirdflyfirst   发布时间: 2011-09-01

this是window,5楼说的fun.call(this),this在fun()中才是button对象。

作者: PoorChild   发布时间: 2011-09-01

楼上都说清楚了,不过既然用JQuery,事件最好还是
JScript code

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

    })
})


这样写比较好

作者: MadEric   发布时间: 2011-09-01