我有一個劇本的工作,並已發現了下面,我實在找不到什麼意思這是一個雙文檔準備好了嗎?
(function($) {
$(document).ready(function(e) {
... bla bla bla ...
});
}) (jQuery);
是(function($){}) (jQuery);
一樣$(function() {});
任何信息?如果是這樣,爲什麼有人會定義兩次document.ready
?
我有一個劇本的工作,並已發現了下面,我實在找不到什麼意思這是一個雙文檔準備好了嗎?
(function($) {
$(document).ready(function(e) {
... bla bla bla ...
});
}) (jQuery);
是(function($){}) (jQuery);
一樣$(function() {});
任何信息?如果是這樣,爲什麼有人會定義兩次document.ready
?
不,這是不一樣的。這是一個正在傳遞jQuery對象的匿名函數,以確保它在函數範圍內作爲局部變量$
可用,即使全局變量$
被另一個庫覆蓋。它完全不同於$(function() { })
和$(document).ready(function() { })
。
這種特殊圖案的jQuery plugin authoring文檔中推薦:
[當創作一個插件]它是將jQuery傳遞到IIFE(立即調用函數表達式)一個最好的做法,它映射到元簽名,因此它不能被執行範圍內的其他庫覆蓋。
(function($) { $.fn.myPlugin = function() { // Do your awesome plugin stuff here }; })(jQuery);
是
(function($){}) (jQuery);
一樣$(function() {});
?
不需要。第一個是立即調用匿名函數,主要用於防止全球範圍的污染。在這種情況下,它也用於確保$
是對jQuery
的引用,而不用擔心在其他地方覆蓋$
。
第二個是帶有jQuery的the shorthand for binding a document ready handler。
更多閱讀:
不,這不是。它是一個封閉式的文檔就緒處理程序。它用於確保機箱中的$
爲jQuery保留,並且不會干擾任何其他庫。
否它不是,(function($){}) (jQuery);
是IIFE(立即調用函數表達式)使jQuery的作爲參數,並使用$
代表它在功能範圍,以便如果使用$
另一個庫而不加載不會發生衝突使用jQuery.noConflict。
雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供參考鏈接。 –
強烈建議不要使用鏈接回答。您的回答需要包括回答問題所需的所有信息,然後可以通過鏈接補充*。 – meagar
都能跟得上
(function(){})();
是隻要瀏覽器遇到腳本執行。 。ready()是整個文檔被解析後觸發的事件
可能試圖解決一些OTHER js庫從jquery重新定義'$',通過將整個jquery對象作爲參數傳遞給這個「ready」函數,所以當內部就緒函數實際觸發時,它保證是jquery。 –
可能與許多其他庫正在加載時一樣@MarcB。謝謝 – Alex