Rumah > Artikel > hujung hadapan web > Contoh analisis penggunaan parameter dalam jQuery plug-in production_jquery
Contoh dalam artikel ini menerangkan penggunaan parameter pengeluaran pemalam jQuery. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
1. Realisasikan kesan bayangan teks tanpa parameter
jQuery.fn.shadow =function(){ return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < 5;i++){ $originalElement.clone() .css({ position :"absolute", left :$originalElement.offset().left + i, top :$originalElement.offset().top + i, margin : 0, zIndex : -1, opacity : 0.1 }) .appendTo("body"); } }) }
Contoh panggilan:
2. Parameter mudah
jQuery.fn.shadow =function(slices,opacity,zIndex){ return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < slices;i++){ $originalElement.clone() .css({ position :"absolute", left :$originalElement.offset().left + i, top :$originalElement.offset().top + i, margin : 0, zIndex : zIndex, opacity : opacity }) .appendTo("body"); } }) }
Contoh panggilan:
3. Pemetaan parameter
jQuery.fn.shadow =function(opts){ return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < opts.slices;i++){ $originalElement.clone() .css({ position :"absolute", left :$originalElement.offset().left + i, top : $originalElement.offset().top+ i, margin : 0, zIndex :opts.zIndex, opacity : opts.opacity }) .appendTo("body"); } }) }
Contoh panggilan:
jQuery.fn.shadow =function(options){ var defaults = { slices : 5, opacity : 0.1, zIndex : -1 }; //options中如果存在defaults中的值,则覆盖defaults中的值 var opts = jQuery.extend(defaults,options); return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < opts.slices;i++){ $originalElement.clone() .css({ position :"absolute", left :$originalElement.offset().left + i, top :$originalElement.offset().top + i, margin : 0, zIndex :opts.zIndex, opacity : opts.opacity }) .appendTo("body"); } }) }
Contoh panggilan:
jQuery.fn.shadow =function(options){ var defaults = { slices : 5, opacity : 0.1, zIndex : -1, sliceOffset : function(i){ return {x:i,y:i} } }; //options中如果存在defaults中的值,则覆盖defaults中的值 var opts = jQuery.extend(defaults,options); return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < opts.slices;i++){ //调用回调函数 var offset = opts.sliceOffset(i); $originalElement.clone() .css({ position :"absolute", left :$originalElement.offset().left + offset.x, top :$originalElement.offset().top + offset.y, margin : 0, zIndex :opts.zIndex, opacity : opts.opacity }) .appendTo("body"); } }) }
Contoh panggilan:
6. Nilai lalai boleh disesuaikan
jQuery.fn.shadow =function(options){ //默认值被放在投影插件的命名空间里了 var opts =jQuery.extend({},jQuery.fn.shadow.defaults,options); return this.each(function(){ var $originalElement = jQuery(this); for(var i = 0;i < opts.slices;i++){ //调用回调函数 var offset = opts.sliceOffset(i); $originalElement.clone() .css({ position :"absolute", left :$originalElement.offset().left + offset.x, top :$originalElement.offset().top + offset.y, margin : 0, zIndex :opts.zIndex, opacity : opts.opacity }) .appendTo("body"); } }) } jQuery.fn.shadow.defaults= { slices : 5, opacity : 0.1, zIndex : -1, sliceOffset : function(i){ return { x : i, y : i} } }
Nilai lalai diletakkan dalam ruang nama dan boleh dirujuk terus melalui $.fn.shadow.default. Panggilan ke $.extend() juga mesti diubah suai untuk menyesuaikan diri dengan perubahan ini. Memandangkan semua panggilan ke .shadow() kini menggunakan semula peta lalai, mereka tidak boleh membenarkan $.extend() mengubah suainya, jadi peta kosong ({}) digunakan sebagai parameter pertama $.extend(), Jadikan objek baharu ini sasaran pengubahsuaian.
Kaedah panggilan:
7. Tambahkan ungkapan pemilih
/* *添加选择符表达式 * * 参数: * element:当前的DOM元素,大多数选择符都需要这个 * index:Dom元素在结果集中的索引,这个参数对:eq()和:lt()等选择符比较有用 * matches:包含解析当前选择符的正则表达式结果的数组。通常matches[3]是这个数组中 * 唯一有用的项;对于:a(b)形式的选择符而言,matches[3]项中包含着b,即圆括号中的 * 文本。 * set:到目前为止匹配的整个DOM元素的集合,这个参数用的比较少。 * */ jQuery.extend(jQuery.expr[':'],{ 'css' : function(element,index,matches,set){ //修改之后的matches[3]:width < 100 var parts = matches[3].split(""); var value =parseFloat(jQuery(element).css(parts[0])); switch(parts[1]){ case '<' : return value <parseInt(parts[2]); case '<=' : return value <=parseInt(parts[2]); case '=' : case '==' : return value ==parseInt(parts[2]); case '>=' : return value >= parseInt(parts[2]); case '>' : return value >parseInt(parts[2]); } } })
Panggil:
<divstyle="width: 500px;">Desrunt mollit anim id estlaborum</div> <divstyle="width: 200px;">2222222</div> <divstyle="width:30px;">33333333333333333333333</div> <divstyle="width: 300px;">4444444444444444</div>
Saya harap artikel ini akan membantu pengaturcaraan jQuery semua orang.