問題描述
我知道 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。