問題描述
我知道 jQuery 是載入的,因為我可以切換 $為’jQuery’,並且所有的行為都按預期,但如果我無法解決這個問題,這將是一個凌亂的指令碼
這個指令碼:
jQuery(document).ready(function(){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
產生錯誤 $ is not a function
這個指令碼:
jQuery(document).ready(function(){
jQuery("ul.vimeo_desc_feed li a").click(function(){
alert(jQuery(this).attr('href'));
return false;
})
});
工作正常。
最佳解決方案
您可以將 JavaScript 包裝在 self-invoking 功能中,然後將 jQuery 作為引數傳遞給 $作為本地變數名稱。例如:
(function($) {
$(document).ready(function(){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
}(jQuery));
應按預期工作。
如果我記得正確的 WP-supplied 版本的 jQuery(如果您使用 wp_enqueue_script('jquery')的話),立即將 jQuery 放在 no-conflict 中,導致 $未定義。
次佳解決方案
你幾乎在那裡
jQuery(document).ready(function($){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
你必須將 jQuery 作為 $函式的引用傳遞給你的方法,否則它將不起作用。如果你剛剛把第一個 function()呼叫一個 $,就像上面那樣,事情會很好。
第三種解決方案
將函式傳遞給 jQuery 是 $(document).ready(...)的縮寫,然後透過將 $作為回撥的第一個引數,在該回撥中建立一個 jQuery 的別名:
jQuery(function($) {
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
});
});
您可以看到該 here 的檔案。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。