日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jquery 插件闭包

發布時間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jquery 插件闭包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1. 對JQuery自身的擴展插件

顧名思義,這種插件是對JQuery自身的方法庫進行擴展的。在使用的時候通過$.MethodName()的方式直接使用。
插件代碼示例:

$.extend({??? handleTableUI : function (table){??? varthisTable = $( "#" + table);??? ?????????? $(thisTable).find( "tr" ).bind( "mouseover" , function () {??? $( this ).css({ color: "#ff0011" , background: "blue" });??? });??? $(thisTable).find( "tr" ).bind( "mouseout" , function () {??? $( this ).css({ color: "#000000" , background: "white" });??? });??? }??? });

示例說明:當要對JQuery自身進行擴展的時候,需要采用$.extend();的形式進行開發,JQuery的extend()方法為我們提供了擴展JQuery自身的方式,在extend()方法中,我們采用{...}的形式編寫具體的方法體。其中,最重要的是要定義我們自己的擴展方法,如示例中的handleTableUI。定義的方式是:方法名 : function(參數){ 方法體 }。通過此種方式我們就可以定義JQuery自己的擴展方法,而且這個方法可以在web頁面通過智能提示顯示出來。頁面中調用的代碼如下:

<scripttype= "text/javascript" >??? $(document).ready( function () {??? $.handleTableUI( "newTable" );??? });??? </script>

對HTML標記或頁面元素進行擴展
使用這種插件的擴展方式,在使用此插件時,需要首先引用經過JQuery包裝的頁面元素,如:$("#tableId").Method()。
插件代碼示例:

( function ($){?? $.fn.tableUI = function (options){?? var defaults = {?? evenRowClass: "evenRow" ,?? oddRowClass: "oddRow" ,?? activeRowClass: "activeRow" }?? var options = $.extend(defaults, options);?? this .each( function (){?? var thisTable=$( this );?? //添加奇偶行顏色? $(thisTable).find( "tr:even" ).addClass(options.evenRowClass);?? $(thisTable).find( "tr:odd" ).addClass(options.oddRowClass);?? //添加活動行顏色? $(thisTable).find( "tr" ).bind( "mouseover" , function (){?? $( this ).addClass(options.activeRowClass);?? });?? $(thisTable).find( "tr" ).bind( "mouseout" , function (){?? $( this ).removeClass(options.activeRowClass);?? });?? });?? };?? })(jQuery);

這里重點說一下這一句

var options= $.extend(defaults, options);

這里其實就是合并多個對象為一個。這里就是,如果你在調用的時候寫了新的參數,就用你新的參數,如果沒有寫,就用默認的參數。

?

當要對頁面元素進行JQuery擴展時,需要采用(function($){...})(JQuery);的方式進行開發。在“...”處,定義我們自己的方法,定義方式是:$.fn.自定義方法名 = function(參數){...};的形式定義擴展方法的具體內容。在頁面調用的時候不同于對JQuery自身的擴展。具體調用代碼如下:

3. 不要用在頁面顯式調用JQuery的方法,而是通過直接添加JQuery插件腳本引用,即可實現對該插件的調用。

一般,如果需要用到一些全局的JQuery插件,即:插件的方法不需要顯式調用,而是引用腳本即可;同時,這種插件一般對整個Web頁面起到全局配置或設置的作用,如:對<body></body>內部的內容進行整體布局,此時可以采用腳本引用的方式實現。

插件代碼示例:

( function ($) {??? $.tableUI = { set: function () {??? varthisTable = $( "table" );??? $(thisTable).find( "tr" ).bind( "mouseover" , function () {??? $( this ).css({ color: "#ff0011" , background: "blue" });??? });??? $(thisTable).find( "tr" ).bind( "mouseout" , function () {??? $( this ).css({ color: "#000000" , background: "white" });??? });??? }??? };??? //此處需要進行自調用??? $( function () {??? $.tableUI.set();??? });??? })(jQuery);

示例說明:如果上面這段代碼在my.plugin.js文件中,那么,我們只需要在頁面上添加對此腳本文件的引用即可,引用方式為:<scriptsrc="Scripts/my.plugin.js"type="text/javascript"></script>,當然,在所有要用到JQuery的地方,需要首先添加對JQuery庫腳本的引用。在引用型插件的代碼中,最主要的就是在插件中要主動調用自己所寫的插件方法,上面代碼中有注釋的地方。否則,我們寫的插件代碼將不會起作用。

?

二、插件的基本要點

?

在編寫插件的時候,我們需要記住這些要點,雖然不照著這么做不會影響使用,但是要是你的插件是不規范的代碼,那何必花苦心思去寫插件。

?

?jQuery插件的文件名推薦命名為jquery.[插件名].js,以免和其他JavaScript庫插件混淆。例如命名為jquery.color.js。

?所有的對象方法都應當附加到jQuery.fn對象上,而所有的全局函數都應當附加到jQuery對象本身上。

?在插件內部,this指向的是當前通過選擇器獲取的jQuery對象,而不像一般的方法那樣,例如click()方法,內部的this指向的是DOM元素。

?可以通過this.each來遍歷所有元素。

?所有的方法或函數插件,都應當以分號結尾,否則壓縮的時候可能出現問題。為了更穩妥些,甚至可以在插件頭部先加上一個分號,以免他人的不規范代碼給插件帶來影響。具體方法可以參考后面的代碼。

?插件應該返回一個jQuery對象,以保證插件的可鏈式操作。除非插件需要返回的是一些需要獲取的量,例如字符串或者數組等。

避免在插件內部使用$作為jQuery對象的別名,而應使用完整的jQuery來表示。這樣可以避免沖突。當然,也可以利用閉包這種技巧來回避這個問題,使插件內部繼續使用$作為jQuery的別名。很多插件都是這么做的,本教程也會利用這種形式。

?

?

?

OK,以上就是我對JQuery插件的幾點理解,希望對大家能有所幫助,也希望大家在使用的過程中能及時反饋相關信息。






轉載于:https://my.oschina.net/u/876290/blog/391429

總結

以上是生活随笔為你收集整理的jquery 插件闭包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。