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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

区别 (function($){...})(jQuery)、$(function(){ })和$.fn

發布時間:2023/12/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 区别 (function($){...})(jQuery)、$(function(){ })和$.fn 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、(function($){…})(jQuery)
首先function(arg){...}定義了一個匿名函數,參數為arg,而調用時需要在函數后面寫上括號和實參,由于操作符的優先級,函數本身也需要括號,也就成了:
(function(arg){...})(param)
這就相當于定義了一個參數為arg的匿名函數,并將param作為參數來調用這個匿名函數
而(function($){...})(jQuery)則是一樣的,之所以只在形參使用$,是為了不與其他庫沖突,所以實參用jQuery,其實就等于其實可以這么理解,不過要注意的是fn是不存在的,函數直接定義,然后就運行了,然后就壓縮成如下:

(function($){...})(jQuery)

二、$(function(){})
是$(document).ready(function(){...})的簡寫形式,意思就是頁面載入后執行其中的代碼,也可以被寫成:

jQuery(function(){...}); jQuery(document).ready(function(){...})

兩者相比:
jQuery(function(){...});用于存放操作DOM對象的代碼,執行其中代碼時DOM對象已經存在。不可用于存放開發插件的代碼,因為jQuery對象沒有得到傳遞,外部通過jQuery.method也調用不了其中的方法(函數)。
(function(){...}(jQuery);用于存放開發插件的代碼,執行其中代碼時DOM不一定存在,所以直接自動執行DOM操作的代碼,請小心使用。
簡單理解是(function($){...})(jQuery)用來定義一些需要預先定義好的函數
$(function(){...})則是用來在DOM加載完成之后運行/執行那些預先定義好的函數。

開發jQuery插件時,一般先看jQuery(function(){...}),意義為在DOM加載完畢后執行了ready()方法,再看(function(){...})(jQuery).

三、$.fn
$.fn是指jQuery的命名空間,加上fn的方法及屬性,會對每一個jquery實例有效。
如定義了$.fn.initPageMe(),即對jQuery擴展了一個abc方法,那么后面你的每一個jQuery實例都可以引用這個方法了。

$.fn.initPageMe=function(opts){...}; //定義擴展方法 $(function(){$(".pageMe").initPageMe(); //調用擴展方法 })

四、$與$.fn
$是jQuery的一種表現形式。
jQuery的擴展方式有:

1.$.func1=function(){} 2.$.extend({func1:function(){}}) 3.$.fn.func1=function(){} 4.$.fn.extent({func1:function(){}})

$拓展的方法是靜態方法,可以使用$直接調用,其拓展的方式有兩種,一般使用$.extend({});;而$.fn拓展的方法是實例方法,必須由“對象”$("")來調用,其拓展的方式同樣有兩種,一般使用$.fn.extend({ })。

其中,fn與prototype等同使用;jQuery.fn = jQuery.prototype

總結

以上是生活随笔為你收集整理的区别 (function($){...})(jQuery)、$(function(){ })和$.fn的全部內容,希望文章能夠幫你解決所遇到的問題。

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