jquery 插件學(xué)習(xí)(二)
更新時(shí)間:2012年08月06日 22:07:07 作者:
除了全局函數(shù)外,jquery中的大多數(shù)插件都是通過jquery對(duì)象的方法提供的
創(chuàng)建全局函數(shù)只需通過為jquery對(duì)象添加屬性即可,而創(chuàng)建jquery對(duì)象的方法也可以通過為jquery.fn添加屬性來實(shí)現(xiàn),實(shí)際上jquery.fn對(duì)象就是jquery.prototype原型對(duì)象的別名,使用別名更方便引用。
demo:
jQuery.fn.test = function(){
alert('這是 jquery 對(duì)象方法 ');
}
然后,就可以在任何jquery對(duì)象中調(diào)用該方法了。
$(function(){
$('h1').click(function(){
$(this).test();
});
});
由于這里,并沒有任何地方匹配dom節(jié)點(diǎn),所以編寫全局函數(shù)也是可以的(上一節(jié)有講過哦),但是,在使用jquery對(duì)象方法時(shí),函數(shù)體內(nèi)的this關(guān)鍵字總是引用當(dāng)前的jquery對(duì)象,因此我們可以對(duì)上面的方法進(jìn)行重寫,實(shí)現(xiàn)動(dòng)態(tài)提示信息,代碼如下:
jQuery.fn.test = function(){
alert(this[0].nodeName); //提示當(dāng)前jquery對(duì)象的dom節(jié)點(diǎn)名稱
}
重點(diǎn)來了,在上面的示例中,可以看到由于jquery選擇器返回的是一個(gè)數(shù)組類型的dom節(jié)點(diǎn)集合,this指針就指向當(dāng)前這個(gè)集合,故要顯示當(dāng)前元素的節(jié)點(diǎn)名稱,就必須在this指針后面指定當(dāng)前元素的序號(hào)。
思考: 如果jquery選擇器匹配多個(gè)元素,我們?cè)撊绾螠?zhǔn)確指定當(dāng)前元素的對(duì)象呢?-----
要解決這個(gè)問題,我們不妨在當(dāng)前jquery對(duì)象方法的環(huán)境中調(diào)用each()方法,通過隱式迭代的方式,讓this指針依次飲用每一個(gè)匹配的dom元素對(duì)象,例如,針對(duì)上一個(gè)示例做進(jìn)一步的修改
jQuery.fn.test = function(){
this.each(function(){ //遍歷匹配的元素,此處的this表示對(duì)象集合
alert(this.nodeName); //提示當(dāng)前jquery對(duì)象的dom節(jié)點(diǎn)名稱(注意這里與上面的變化哦,下標(biāo)消失了)
});
}
然后,在調(diào)用方法時(shí),就不用擔(dān)心,jquery選擇器所匹配的元素有多少了。例如在下面的例子中,當(dāng)單擊不同的元素,會(huì)提示當(dāng)前的節(jié)點(diǎn)名稱
$(function(){
$('body *').click(function(){
$(this).test();
});
});
<h1>ceshi</h1>
<a>dddddddddd</a>
<input type="button" value="test"/>
<div>div元素</div>
demo:
復(fù)制代碼 代碼如下:
jQuery.fn.test = function(){
alert('這是 jquery 對(duì)象方法 ');
}
然后,就可以在任何jquery對(duì)象中調(diào)用該方法了。
復(fù)制代碼 代碼如下:
$(function(){
$('h1').click(function(){
$(this).test();
});
});
由于這里,并沒有任何地方匹配dom節(jié)點(diǎn),所以編寫全局函數(shù)也是可以的(上一節(jié)有講過哦),但是,在使用jquery對(duì)象方法時(shí),函數(shù)體內(nèi)的this關(guān)鍵字總是引用當(dāng)前的jquery對(duì)象,因此我們可以對(duì)上面的方法進(jìn)行重寫,實(shí)現(xiàn)動(dòng)態(tài)提示信息,代碼如下:
復(fù)制代碼 代碼如下:
jQuery.fn.test = function(){
alert(this[0].nodeName); //提示當(dāng)前jquery對(duì)象的dom節(jié)點(diǎn)名稱
}
重點(diǎn)來了,在上面的示例中,可以看到由于jquery選擇器返回的是一個(gè)數(shù)組類型的dom節(jié)點(diǎn)集合,this指針就指向當(dāng)前這個(gè)集合,故要顯示當(dāng)前元素的節(jié)點(diǎn)名稱,就必須在this指針后面指定當(dāng)前元素的序號(hào)。
思考: 如果jquery選擇器匹配多個(gè)元素,我們?cè)撊绾螠?zhǔn)確指定當(dāng)前元素的對(duì)象呢?-----
要解決這個(gè)問題,我們不妨在當(dāng)前jquery對(duì)象方法的環(huán)境中調(diào)用each()方法,通過隱式迭代的方式,讓this指針依次飲用每一個(gè)匹配的dom元素對(duì)象,例如,針對(duì)上一個(gè)示例做進(jìn)一步的修改
復(fù)制代碼 代碼如下:
jQuery.fn.test = function(){
this.each(function(){ //遍歷匹配的元素,此處的this表示對(duì)象集合
alert(this.nodeName); //提示當(dāng)前jquery對(duì)象的dom節(jié)點(diǎn)名稱(注意這里與上面的變化哦,下標(biāo)消失了)
});
}
然后,在調(diào)用方法時(shí),就不用擔(dān)心,jquery選擇器所匹配的元素有多少了。例如在下面的例子中,當(dāng)單擊不同的元素,會(huì)提示當(dāng)前的節(jié)點(diǎn)名稱
復(fù)制代碼 代碼如下:
$(function(){
$('body *').click(function(){
$(this).test();
});
});
復(fù)制代碼 代碼如下:
<h1>ceshi</h1>
<a>dddddddddd</a>
<input type="button" value="test"/>
<div>div元素</div>
相關(guān)文章
jQuery Validate 相關(guān)參數(shù)及常用的自定義驗(yàn)證規(guī)則
這篇文章主要介紹了jQuery Validate 相關(guān)參數(shù)及常用的自定義驗(yàn)證規(guī)則,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
jQuery實(shí)現(xiàn)內(nèi)容定時(shí)切換效果完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)內(nèi)容定時(shí)切換效果,以完整實(shí)例形式較為詳細(xì)的分析了jQuery結(jié)合時(shí)間函數(shù)針對(duì)內(nèi)容的定時(shí)切換顯示相關(guān)技巧,需要的朋友可以參考下2016-04-04
jQuery實(shí)現(xiàn)的超簡單輪播圖功能示例【代碼解釋】
這篇文章主要介紹了jQuery實(shí)現(xiàn)的超簡單輪播圖功能,結(jié)合完整實(shí)例形式分析了基于jQuery實(shí)現(xiàn)的輪播圖相關(guān)功能實(shí)現(xiàn)、樣式設(shè)置與注意事項(xiàng),需要的朋友可以參考下2023-05-05
在jquery中的ajax方法怎樣通過JSONP進(jìn)行遠(yuǎn)程調(diào)用
這一節(jié)主要演示下在JQUERY中的ajax方法怎樣通過JSONP進(jìn)行遠(yuǎn)程調(diào)用,需要的朋友可以參考下2014-04-04
jQuery實(shí)現(xiàn)動(dòng)態(tài)向上滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)向上滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
jQuery slider Content(左右控制移動(dòng))
jQuery slider Content(左右控制移動(dòng))實(shí)現(xiàn)代碼,大家可以參考下。2009-09-09

