2012-03-25 25 views
0

我有一個關於與WordPress和jQuery問題的問題:我已經注意到,WordPress的有自定義模板的引入jQuery插件的更多問題:

在一個字,當我把頭像裏面的代碼就像我寫了一個deblug函數,如 $(document).ready(function(){alert(「ciao」)});

他不工作,firefox調試告訴我「$不是一個函數」。

如果我把裏面的代碼頁腳是這樣的:

jQuery(document).ready(function() { 

    alert("ciao"); 

}); 


</script> 

我sospiceus是WordPress的內部有it..but更多的JS庫,如果我寫

(function($) { 

$ Works! You can test it with next line if you like 
console.log($); 

    })(jQuery); 

$接受它(理論上)..爲什麼這一切?

回答

1

首先,$()只是jQuery()函數的別名。 $只是一個簡寫名稱,因此每次使用jQuery時都不會寫jQuery

現在我已經看到很多人抱怨wordpress「劫持」jQuery。會發生什麼情況是,而不是$作爲jQuery,它被用作別的東西,因此錯誤$ is not a function - 但我們仍然有longhand jQuery()函數來救援。

但人們傾向於使用$,因爲它更短,但是當$被「劫持」時,我們該如何做到這一點?它的倒閉救援也:

//others "$" for another library out here 

(function($){ 
    //"jQuery" as "$" safely in here 
}(jQuery)); 

//others "$" for another library out here 

的代碼做什麼上面是創建一個接受我們的名字$參數的函數,並立即執行,通過jQuery作爲參數。它大致相當於這一點,但沒有函數的名稱:

function no_name($){ 
    //"jQuery" as "$" safely in here 
} 
no_name(jQuery); 

所以裏面的功能,$是一個局部變量。其中使用$它屬於通話期間傳遞的變量,即jQuery而不是全球劫持$