[英]Firebug giving jQuery “$ is undefined” error even when jQuery is loaded before the script
好,所以我有一個WordPress網站。 它使用了很多jQuery腳本,並且jQuery被加載到頁面的標題中。 我有一小段代碼,應該簡單地向圖像鏈接添加一個類。 我將其放置在文檔的底部,即</body>
標記之前。
<script type="text/javascript">
$.noConflict();
$(document).ready(function () {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
該腳本不起作用,Firebug給我一個$ is undefined
錯誤。 我檢查了各種類似的其他問題,答案似乎無濟於事。
來源頁面在這里: http : //sergedenimes.com/2013/01/bruno-bisang-30-years-of-polaroids/
我敢肯定這是另一個引起沖突的插件,但是如果您能提供解決方法,請多多指教。
編輯:哇,謝謝您的快速反應。 似乎它是一個較早的插件,用於渲染$
undefined。 替換jQuery
已解決。
您已經完成了jQuery.noConflict();
在代碼的前面,因此使$
不確定。
查看源代碼的第79行。
$.noConflict();
使$
符號回到加載jQuery之前的定義。 如果沒有其他使用該符號的庫,則它返回undefined
。 這就是它的目的。
如果要使用它而不是將任何其他符號定義為jQuery
的快捷方式,則必須使用jQuery
作為jQuery函數的符號,而不是$
。
改為這樣做:
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function () {
jQuery('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
或者,如果您只想在.ready()
處理函數中使用$
,則可以使用.ready()
的功能進行分配,如下所示:
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function ($) {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
或者,如果您的代碼不只是要使用$
的.ready()
處理函數,則可以在閉包中重新定義$
,以使其他庫可以在自己的代碼中使用$
,但是您可以在自己的jQuery中使用它jQuery代碼里面的閉包:
<script type="text/javascript">
$.noConflict();
(function($) {
$(document).ready(function () {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
$.each(whatever...)
})(jQuery);
</script>
或者,您可以為jQuery定義一個新的快捷方式符號:
<script type="text/javascript">
var $$ = $.noConflict();
$$(document).ready(function () {
$$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
嘗試:
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.