免責聲明:爲什麼,如果我使用jQuery不要在家
試試這個,不$($)
凍結頁面?
免責聲明:爲什麼,如果我使用jQuery不要在家
試試這個,不$($)
凍結頁面?
$($)
是$(document).ready($)
的快捷方式。所以,它會運行這個函數(當DOM準備就緒時,或者直接在這種情況下)。
傳遞給.ready
的函數爲了方便而傳遞了jQuery函數(當您處於noConflict
模式時特別有用)。因此,$($)
將以$
作爲參數調用$
- 並且所有事情都會再次發生,這是無止境的遞歸。
另一種解釋:
$($)
。$
)添加到內部ready
列表中。ready
列表中的所有函數」。ready
列表中的唯一功能是$
,因此它調用$
。$
函數作爲參數傳遞給這些函數。$
作爲參數$
。$
函數看到一個函數作爲它的參數,但是因爲DOM已經準備就緒,它直接調用函數(沒有什麼可以等待的)。$
作爲參數調用$
函數。'$($)是$(document).ready'的快捷方式真的嗎? – 2012-03-06 14:47:26
@LightnessRacesinOrbit - Yes - '$(func)'是'$(document).ready(func)'的快捷方式。 – pimvdb 2012-03-06 14:48:02
你會認爲所有的安全檢查正在做,這將是我們微不足道的添加... – 2012-03-06 14:48:09
現在這就是我所說的「jQueryception」。
你在jQuery中調用整個jQuery庫。
更多信息;
當您調用「$」(由jQuery庫定義爲jQuery核心函數)時,它將初始化jQuery並嘗試調用已定義的函數(如果它有)。當你實際調用「$($);」你會在jQuery中調用jQuery,它會一次又一次地調用jQuery。
從jQuery 1.7.1源代碼;
// HANDLE: $(function)
// Shortcut for document ready
} else if (jQuery.isFunction(selector)) {
return rootjQuery.ready(selector);
}
而且
rootjQuery = jQuery(document);
正如你所看到的,當你調用$($);它試圖用你的函數的名字來調用jQuery,如果你再次用jQuery調用它,同樣的事情將會像我之前解釋過的那樣無休止地發生。
$
是工廠函數jQuery
的別名。
jQuery
工廠函數在傳遞函數作爲第一參數時,在document.ready
處運行該函數並將jQuery
作爲第一個參數傳遞給它。
因此,當達到document.ready
時,最終會出現無限遞歸。
在文檔加載完成後,如何在控制檯上運行它時如何工作(使用相同的結果)? – 2012-03-06 15:49:23
@GGG如果'document.ready'已經到達,'jQuery'繼續執行並在調用時運行給它的函數。 – JAAulde 2012-03-06 15:57:25
啊,當然... – 2012-03-06 15:57:54
美元是一個函數。如果你自己調用它,它會運行到無限遞歸。 – Demnogonis 2012-03-06 14:46:27
+1免責聲明! – charlietfl 2012-03-06 14:53:02
爲什麼這個問題需要保護? – 2012-11-02 00:41:40