jquery中this的使用說明
原來js中的this這么好用
$(document).ready(function(){
var DragElement=null;
$("#zz").mousedown(function(){
DragElement=this;//這時(shí)this指的就是$("#zz")對(duì)象
$(document).mousemove(function(){
如果直接$(this).css("left")//由于是在mousemove內(nèi),這樣this對(duì)象就不是$("#zz"),
這時(shí)可以用$(DragElement).css("left")//這樣取的就是$("#zz")
})
})
})
$(this)生成的是什么
$()生成的是什么呢?實(shí)際上$()=jquery(),那么也就是說返回的是一個(gè)jquery的對(duì)象。
題外話:通常我們?yōu)榱撕?jiǎn)便直接使用$(),實(shí)際上,該函數(shù)省略了一個(gè)參數(shù)context,即$(selector)=$(selector,document).如果指定context,可以指定context為一個(gè)dom元素集或者jquery對(duì)象。
那么依照,$()返回的是jquery對(duì)象這一結(jié)論,我們可以得出$(this)得到的是一個(gè)jquery對(duì)象.我們可以使用萬能的alert()方法打印出一個(gè)對(duì)象:
alert($('#btn'));
顯示的結(jié)果:

該圖紅色框勾選出來的是一個(gè)object,不用考慮,該object自然是jquery的對(duì)象咯。也即是說我們用通過$('#btn')來調(diào)用jquery的方法和屬性等。
this代表什么?
this,編程的人都知道this表示上下文所處的這個(gè)對(duì)象,這個(gè)自然是不錯(cuò)的,可是這個(gè)對(duì)象到底是個(gè)什么對(duì)象呢?加入js里面也有g(shù)etType的話返回的值會(huì)是什么呢?其實(shí)js里面不需要使用getType,因?yàn)槲覀冇腥f能的alert.請(qǐng)看看下面的代碼:
$('#btn').bind("click",function(){
alert(this);
alert($(this));
});
根據(jù)我們的經(jīng)驗(yàn)(因?yàn)?()生成的是jquery的對(duì)象嘛),this自然是一個(gè)jquery的對(duì)象咯??墒俏覀兛纯捶祷氐慕Y(jié)果:

返回的是什么?【object HTMLInputElement】——偉大的html對(duì)象,嘿嘿。所以我們通常在直接使用this.val()或者直接通過this來調(diào)用jquery所特有的方法或?qū)傩缘臅r(shí)候會(huì)報(bào)錯(cuò)誤: 為什么呢?明知故問!html對(duì)象當(dāng)然“不包含屬性或方法”了。那么為什么在一個(gè)jquery對(duì)象的上下文中調(diào)用this返回的是一個(gè)html對(duì)象而不是jquery對(duì)象 呢?翻遍jquery的api文檔,貌似jquery中并未對(duì)this這一關(guān)鍵字進(jìn)行過特殊“處理”,也就是說這里this是js中的,而不是jquery重新定義了的。so...當(dāng)然這僅僅是我自己的想法,如果有對(duì)此更了解的朋友可以留言更正。而我們?cè)倏匆幌乱陨洗a中alert($(this));的返回,自然是jquery的對(duì)象了,在此調(diào)用jquery特有的方法和屬性,完全沒有問題。
結(jié)論:
this,表示當(dāng)前的上下文對(duì)象是一個(gè)html對(duì)象,可以調(diào)用html對(duì)象所擁有的屬性,方法
$(this),代表的上下文對(duì)象是一個(gè)jquery的上下文對(duì)象,可以調(diào)用jquery的方法和屬性值。
- jQuery AJAX回調(diào)函數(shù)this指向問題
- jQuery 選擇方法及$(this)用法實(shí)例分析
- 淺談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對(duì)象的方法
- jQuery中$this和$(this)的區(qū)別介紹(一看就懂)
- 實(shí)例講解JQuery中this和$(this)區(qū)別
- 詳談jQuery中的this和$(this)
- 通過$(this)使用jQuery包裝后的方法或?qū)傩?/a>
- jquery $(this).attr $(this).val方法使用介紹
- JQuery this 和 $(this) 的區(qū)別
- JQuery中this的指向詳解
相關(guān)文章
jQuery學(xué)習(xí)筆記之jQuery構(gòu)建函數(shù)的7種方法
jQuery把所有的操作都包裝在一個(gè)jQuery()函數(shù)中,形成了統(tǒng)一(也是惟一)的操作入口,這為jQuery操作降低了門檻。那我們來看下具體構(gòu)造函數(shù)的“七種武器”吧。2014-06-06使用jquery局部刷新(jquery.load)從數(shù)據(jù)庫取出數(shù)據(jù)
jquery提供了很好的ajax交互,我這里用的是直接返回字符串,用的是jquery.load方法從數(shù)據(jù)庫取出的數(shù)據(jù)2014-01-01jQuery實(shí)現(xiàn)輸入框下拉列表樹插件特效代碼分享
這篇文章主要介紹了jQuery實(shí)現(xiàn)輸入框下拉列表樹特效,推薦給大家,有需要的小伙伴可以參考下。2015-08-08JQuery EasyUI 加載兩次url的原因分析及解決方案
這篇文章主要介紹了JQuery EasyUI 加載兩次url的原因分析及解決方案,需要的朋友可以參考下2014-08-08jQuery自定義元素右鍵點(diǎn)擊事件(實(shí)現(xiàn)案例)
下面小編就為大家?guī)硪黄猨Query自定義元素右鍵點(diǎn)擊事件(實(shí)現(xiàn)案例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04javascript jQuery $.post $.ajax用法
這是一個(gè)簡(jiǎn)單的 POST 請(qǐng)求功能以取代復(fù)雜 $.ajax 。請(qǐng)求成功時(shí)可調(diào)用回調(diào)函數(shù)。如果需要在出錯(cuò)時(shí)執(zhí)行函數(shù),請(qǐng)使用 $.ajax。2008-07-07jQuery模擬爆炸倒計(jì)時(shí)功能實(shí)例代碼
本文通過代碼給大家介紹了jQuery模擬爆炸倒計(jì)時(shí)功能實(shí)例代碼,非常不錯(cuò),代碼簡(jiǎn)單易懂,需要的朋友參考下吧2017-08-08element form 校驗(yàn)數(shù)組每一項(xiàng)實(shí)例代碼
這篇文章主要介紹了element form 校驗(yàn)數(shù)組每一項(xiàng)的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10當(dāng)jQuery遭遇CoffeeScript的時(shí)候 使用分享
雖然對(duì)ruby不太了解,但是看到CoffeeScript詩一般的代碼確實(shí)被怔住了,和jQuery之前給我的感覺是如此的相似——都是一個(gè)字,美,當(dāng)jQuery遭遇到CoffeeScript時(shí),會(huì)蹦出什么樣的火花呢?2011-09-09