jQuery中的this用法.doc_第1页
jQuery中的this用法.doc_第2页
jQuery中的this用法.doc_第3页
jQuery中的this用法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

jQuery中的this用法 在使用jquery操作js时,经常整不明白this与$(this)。抽空仔细测试了一把,记录下来以供在忘记的时候拉出来参考参考!原来js中的this这么好用$(document).ready(function()var DragElement=null;$(#zz).mousedown(function()DragElement=this;/这时this指的就是$(#zz)对象$(document).mousemove(function()如果直接$(this).css(left)/由于是在mousemove内,这样this对象就不是$(#zz),这时可以用$(DragElement).css(left)/这样取的就是$(#zz)$(this)生成的是什么$()生成的是什么呢?实际上$()=jquery(),那么也就是说返回的是一个jquery的对象。题外话:通常我们为了简便直接使用$(),实际上,该函数省略了一个参数context,即$(selector)=$(selector,document).如果指定context,可以指定context为一个dom元素集或者jquery对象。那么依照,$()返回的是jquery对象这一结论,我们可以得出$(this)得到的是一个jquery对象.我们可以使用万能的alert()方法打印出一个对象:alert($(#btn);显示的结果:该图红色框勾选出来的是一个object,不用考虑,该object自然是jquery的对象咯。也即是说我们用通过$(#btn)来调用jquery的方法和属性等。this代表什么?this,编程的人都知道this表示上下文所处的这个对象,这个自然是不错的,可是这个对象到底是个什么对象呢?加入js里面也有getType的话返回的值会是什么呢?其实js里面不需要使用getType,因为我们有万能的alert.请看看下面的代码:复制代码 代码如下:$(#btn).bind(click,function()alert(this);alert($(this););根据我们的经验(因为$()生成的是jquery的对象嘛),this自然是一个jquery的对象咯。可是我们看看返回的结果:返回的是什么?【object HTMLInputElement】伟大的html对象,嘿嘿。所以我们通常在直接使用this.val()或者直接通过this来调用jquery所特有的方法或属性的时候会报错误: 为什么呢?明知故问!html对象当然“不包含属性或方法”了。那么为什么在一个jquery对象的上下文中调用this返回的是一个html对象而不是jquery对象 呢?翻遍jquery的api文档,貌似jquery中并未对this这一关键字进行过特殊“处理”,也就是说这里this是js中的,而不是jquery重新定义了的。so.当然这仅仅是我自己的想法,如果有对此更了解的朋友可以留言更正。而我们再看一下以上代码中alert($(this);的返回,自然是jquery的对象了,在此调用jquery特有的方法和属性,完全没有问题。结论:this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性,方法$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。What is this?In many object-oriented programming languages, this (or self) is a keyword which can be used in instance methods to refer to the object on which the currently executing method has been invoked.复制代码代码如下:$(#textbox).hover(function() this.title = Test;,fucntion() this.title = OK”;);这里的this其实是一个Html 元素(textbox),textbox有text属性,所以这样写是完全没有什么问题的。但是如果将this换成$(this)就不是那回事了,Error报了。Error Code:复制代码代码如下:$(#textbox).hover(function() $(this).title Test;,function() $(this).title = OK;);这里的$(this)是一个JQuery对象,而jQuery对象沒有title 属性,因此这样写是错误的。JQuery拥有attr()方法可以get/set DOM对象的属性,所以正确的写法应该是这样:正确的代码:复制代码代码如下:$(#textbox).hover(function() $(this).attr(title, T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论