jQuery插件制作之全局函數(shù)用法實例
本文實例講述了jQuery插件制作之全局函數(shù)用法。分享給大家供大家參考。具體分析如下:
1、添加新的全局函數(shù)
所謂的全局函數(shù),實際上就是jQuery對象的方法,但從實踐的角度上看,他們是位于jQuery命名空間內(nèi)部的函數(shù)
(1)添加一個函數(shù),只需要將新函數(shù)指定為jQuery對象的一個屬性。
jQuery.five =function(){
alert("直接繼承方式不一樣");
}
調(diào)用:
(2)添加多個函數(shù)
jQuery.five =function(){
alert("直接繼承方式不一樣");
}
jQuery.six =function(){
alert("直接繼承方式不一樣2");
}
調(diào)用:
以上的方法會面臨命名空間沖突的風(fēng)險,為避免這個問題,最好把屬于這個插件的所有全局函數(shù),都封裝到一個對象中,如下:
//命名空間繼承
jQuery.myPlugin ={
one : function(obj){
var object = obj;
var id = object.attr("id");
alert(id);
},
two : function(){
alert(22);
}
}
這樣其實是為全局函數(shù)創(chuàng)建了另一個命名空間:jQuery.myPlugin.
2、添加jQuery對象方法
jQuery中大多數(shù)內(nèi)置的功能都是通過其對象的方法提供的。
jQuery.fn.myMethod= function(){
alert(11);
}
調(diào)用:
注意:jQuery.fn是jQuery.prototype的別名。
實例:以下是行為不正確的方法
<ul> <li>11111111111111111111111111</li> <liclass="this">22222222222222222222</li> <li>333333333333333</li> <liclass="that">44444444444444444</li> <liclass="this">55555555555555</li> <li>6666666666666666</li> <li>777777777777777777</li> <liclass="that">777777777777777777</li> </ul> <inputtype="button" value="swap" id="swap" />
jQuery.fn.swapClass= function(class1,class2){
if(this.hasClass(class1)){
this.removeClass(class1).addClass(class2);
}
if(this.hasClass(class2)){
this.removeClass(class2).addClass(class1);
}
}
$("#swap").click(function(){
$("li").swapClass("this","that");
return false;
})
全部li都是用了that樣式。
(1)隱士迭代
要在無論匹配多個元素的情況下都保證行為的正確,最簡單的方法是始終在方法的環(huán)境上調(diào)用.each()方法,這樣就會
執(zhí)行隱士迭代,而執(zhí)行隱士迭代對于維護(hù)插件和內(nèi)置方法的一致性是至關(guān)重要的,在調(diào)用的.each()方法內(nèi)部,this
依次引用的是每個DOM元素.以上代碼修改為:
jQuery.fn.swapClass= function(class1,class2){
this.each(function(){
var $element = jQuery(this);
if($element.hasClass(class1)){
$element.removeClass(class1).addClass(class2);
}else if($element.hasClass(class2)){
$element.removeClass(class2).addClass(class1);
}
})
}
調(diào)用:
(2)方法的連綴
要使用方法的連綴,必須在所有的插件方法中返回一個jQuery對象。返回的jQuery對象通常就是this所引用的對象。
jQuery.fn.swapClass= function(class1,class2){
return this.each(function(){
var $element = jQuery(this);
if($element.hasClass(class1)){
$element.removeClass(class1).addClass(class2);
}else if($element.hasClass(class2)){
$element.removeClass(class2).addClass(class1);
}
})
}
調(diào)用:
3、添加新的簡寫方法
//添加新的簡寫方法
jQuery.fn.slideFadeOut= function(speed,callback){
return this.animate({
height : "hide",
opacity : "hide"
},speed,callback)
}
jQuery.fn.slideFadeIn= function(speed,callback){
return this.animate({
height : "show",
opacity : "show"
},speed,callback)
}
jQuery.fn.slideFadeToggle= function(speed,callback){
return this.animate({
height : "toggle",
opacity : "toggle"
},speed,callback)
}
希望本文所述對大家的jQuery程序設(shè)計有所幫助。
相關(guān)文章
jquery實現(xiàn)可旋轉(zhuǎn)可拖拽的文字效果代碼
這篇文章主要介紹了jquery實現(xiàn)可旋轉(zhuǎn)可拖拽的文字效果代碼,涉及jquery響應(yīng)鼠標(biāo)事件動態(tài)操作頁面元素樣式的相關(guān)技巧,需要的朋友可以參考下2016-01-01
選擇TreeView控件的樹狀數(shù)據(jù)節(jié)點的JS方法(jquery)
前些日子為了提高人性化選擇樹狀權(quán)限的功能,根據(jù)樹的結(jié)構(gòu)用jquery寫了個方法。2010-02-02
以WordPress為例講解jQuery美化頁面Title的方法
鼠標(biāo)移動到超鏈接時顯示Title提示即是所謂Title美化的一般手段,這里我們就以WordPress為例講解jQuery美化頁面Title的方法,需要的朋友可以參考下2016-05-05
Jquery 改變radio/checkbox選中狀態(tài),獲取選中的值(示例代碼)
這篇文章主要介紹了Jquery 改變radio/checkbox選中狀態(tài),獲取選中的值(示例代碼) 需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
jQuery中與toggleClass等價的程序段 以及未來學(xué)習(xí)的方向
昨天開始學(xué)jQuery,js是我前端設(shè)計技術(shù)的一塊心病,一直沒有找到很好的學(xué)習(xí)辦法。最近突然開悟,可以學(xué)jQuery呀,這個東西比較好學(xué)。2010-03-03

