開發(fā)插件的兩個(gè)方法jquery.fn.extend與jquery.extend
JavaScript代碼
jQuery.fn.extend(object);
jQuery.extend(object);
jQuery.extend(object); 為擴(kuò)展jQuery類本身.為類添加新的方法。
jQuery.fn.extend(object);給jQuery對(duì)象添加方法。
fn 是什么東西呢。查看jQuery代碼,就不難發(fā)現(xiàn)。
JavaScript代碼
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {//….
//……
};
原來 jQuery.fn = jQuery.prototype.對(duì)prototype肯定不會(huì)陌生啦。
雖然 javascript 沒有明確的類的概念,但是用類來理解它,會(huì)更方便。
jQuery便是一個(gè)封裝得非常好的類,比如我們用 語句 $(“#btn1″) 會(huì)生成一個(gè) jQuery類的實(shí)例。
jQuery.extend(object); 為jQuery類添加添加類方法,可以理解為添加靜態(tài)方法。如:
XML/HTML代碼
$.extend({
add:function(a,b){return a+b;}
});
便為 jQuery 添加一個(gè)為 add 的 “靜態(tài)方法”,之后便可以在引入 jQuery 的地方,使用這個(gè)方法了,
JavaScript代碼
$.add(3,4); //return 7
jQuery.fn.extend(object); 對(duì)jQuery.prototype進(jìn)得擴(kuò)展,就是為jQuery類添加“成員函數(shù)”。jQuery類的實(shí)例可以使用這個(gè)“成員函數(shù)”。
比如我們要開發(fā)一個(gè)插件,做一個(gè)特殊的編輯框,當(dāng)它被點(diǎn)擊時(shí),便alert 當(dāng)前編輯框里的內(nèi)容??梢赃@么做:
JavaScript代碼
$.fn.extend({
alertWhileClick:function(){
$(this).click(function(){
alert($(this).val());
});
}
});
$(“#input1″).alertWhileClick(); //頁面上為:<input id=”input1″ type=”text”/>
$(“#input1″) 為一個(gè)jQuery實(shí)例,當(dāng)它調(diào)用成員方法 alertWhileClick后,便實(shí)現(xiàn)了擴(kuò)展,每次被點(diǎn)擊時(shí)它會(huì)先彈出目前編輯里的內(nèi)容。
真實(shí)的開發(fā)過程中,當(dāng)然不會(huì)做這么小白的插件,事實(shí)上jQuery提拱了豐富的操作文檔,事件,CSS ,Ajax、效果的方法,結(jié)合這些方法,便可以開發(fā)出更加 Niubility 的插件。
注意:
在這里還有一個(gè)特殊的地方,就是在函數(shù)開頭的地方有jQuery.extend = jQuery.fn.extend,而在程序的前面已經(jīng)將jQuery.prototype賦值給jQuery.fn了,所以在后面的調(diào)用中會(huì)出現(xiàn) jQuery.extend()和jQuery.fn.extend()的不同調(diào)用,這兩個(gè)方法調(diào)用產(chǎn)生的結(jié)果也不一樣,jQuery.extend() 的調(diào)用并不會(huì)把方法擴(kuò)展到對(duì)象的實(shí)例上,引用它的方法也需要通過jQuery類來實(shí)現(xiàn),如jQuery.init(),而 jQuery.fn.extend()的調(diào)用把方法擴(kuò)展到了對(duì)象的prototype上,所以實(shí)例化一個(gè)jQuery對(duì)象的時(shí)候,它就具有了這些方法,這 是很重要的,在jQuery.js中到處體現(xiàn)這一點(diǎn)
- jQuery.extend()、jQuery.fn.extend()擴(kuò)展方法示例詳解
- 淺談jquery.fn.extend與jquery.extend區(qū)別
- jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析
- jQuery插件開發(fā)的兩種方法及$.fn.extend的詳解
- jquery的extend和fn.extend的使用說明
- jQuery中extend()和fn.extend()方法詳解
- Jquery實(shí)現(xiàn)$.fn.extend和$.extend函數(shù)
- jquery簡單插件制作(fn.extend)完整實(shí)例
- 深入理解jquery的$.extend()、$.fn和$.fn.extend()
- jQuery.extend 與 jQuery.fn.extend的用法及區(qū)別實(shí)例分析
相關(guān)文章
jQuery阻止移動(dòng)端遮罩層后頁面滾動(dòng)
本文主要介紹了jQuery阻止移動(dòng)端遮罩層后頁面滾動(dòng)的方法。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
jquery ajaxfileuplod 上傳文件 essyui laoding 效果【防止重復(fù)上傳文件】
點(diǎn)擊一次上傳, 當(dāng)上傳操作結(jié)束后才能操作界面,實(shí)現(xiàn)方式是通過 ajaxfileuplod 上傳文件,需要的朋友參考下吧2018-05-05
jQuery與getJson結(jié)合的用法實(shí)例
這篇文章主要介紹了jQuery與getJson結(jié)合的用法,實(shí)例分析了jquery解析json數(shù)據(jù)及數(shù)組遍歷的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
jQuery Ajax之$.get()方法和$.post()方法
load()方法通常用來從Web服務(wù)器上獲取靜態(tài)的數(shù)據(jù)文件,然而這并不能體現(xiàn)Ajax的全部價(jià)值。在項(xiàng)目中,如果需要傳遞一些參數(shù)給服務(wù)器中的頁面,那么可以使用$.get()或者$.post()方法(或者是后面要講解到的$.ajax方法)。2009-10-10
jQuery中removeData()方法用法實(shí)例
這篇文章主要介紹了jQuery中removeData()方法用法,實(shí)例形式分析了removeData()方法移除匹配元素指定數(shù)據(jù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
jQuery ''行 4954 錯(cuò)誤: 不支持該屬性或方法'' 的問題解決方法
這個(gè)問題只在IE下出現(xiàn)。詭異的是,對(duì)于出現(xiàn)這個(gè)問題的頁面,重新刷新一下就又好了,Ajax 工作一切正常。順便說一下,我的 jQuery 版本是 1.4.2。2011-01-01
Jquery給當(dāng)前頁或者跳轉(zhuǎn)后頁面的導(dǎo)航欄添加選中后樣式的實(shí)例
下面小編就為大家?guī)硪黄狫query給當(dāng)前頁或者跳轉(zhuǎn)后頁面的導(dǎo)航欄添加選中后樣式的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
jquery基礎(chǔ)教程之?dāng)?shù)組使用詳解
jQuery的數(shù)組處理、便捷、功能齊全。一步到位的封裝了很多原生JavaScript數(shù)組不能企及的功能。下面是jquery數(shù)組的使用詳解,需要的朋友可以參考下2014-03-03
從零開始學(xué)習(xí)jQuery (七) jQuery動(dòng)畫實(shí)現(xiàn) 讓頁面動(dòng)起來
開發(fā)人員一直痛疼做動(dòng)畫. 但是有了jQuery你會(huì)瞬間成為別人(那些不知道jQuery的人)眼里的動(dòng)畫高手! 本文將介紹jQuery的動(dòng)畫相關(guān)函數(shù).原來做動(dòng)畫如此簡單!2011-02-02

