2013-03-17 106 views
0

好日子jQuery的打破我的WordPress網站

我,包括我的header.php文件像這樣的jQuery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script> 

但是這樣做的時候,它打破我的主頁滑塊,它打破了我的谷歌映射最終插件和其他一些東西。當我排除它,沒有自定義jquery在我的網頁上運行...只有滑塊工程,它必須使用jQuery ...

因此,如果jQuery已經在我的網站上運行(因爲我有jQuery的寬鬆主題等..),爲什麼我添加到我的文件標籤不工作的自定義jQuery代碼?但是,當我像上面所說的包含jquery時,我的自定義代碼運行,但它打破了其他插件...

這是爲什麼?

謝謝

回答

1

您的自定義jQuery代碼沒有與WordPress包含的現有jQuery一起運行的原因可能是因爲WordPress的jQuery設置爲noconflict。 noconflict方法放棄了jQuery中使用的「$」快捷方式。這意味着依賴它的代碼,例如

$("p").hide(); 

...將無法正常工作,因爲$並不代表jQuery obejct。嘗試包裝你的自定義代碼這樣的,這是獲得$對象返回的標準方式(從this page採取爲例):因爲有幾個不同的JavaScript庫使用$作爲「捷徑」可變

jQuery(function ($) { 
/* You can safely use $ in this code block to reference jQuery */ 
    $("p").hide(); 
}); 

這樣做(例如MooTools),第三方WordPress插件和主題通常包含其他JavaScript庫。放棄$並讓你明確指定你真正想要使用哪個對象是一種確保WordPress將多個庫加載到單個頁面時的衝突最少的方法。

所以,我要說,確保WordPress的標準版本的jQuery的是提供給你的主題(也許在你的functions.php使用wp_enqueue_script),如圖tip one here

function my_init() { 
    if (!is_admin()) { 
     wp_enqueue_script('jquery'); 
    } 
} 
add_action('init', 'my_init'); 

...,然後使用它通過添加上面的「map-jQuery-back-to-$」包裝方法在你自己的函數中最適合全面的兼容性。大多數當前的WordPress主題和需要jQuery的插件將被編寫爲使用WordPress的運輸版本的jQuery,您應該也可以這樣做。

+0

謝謝!非常感激!!! – 2013-03-17 16:50:36

2

jQuery 1.9.1棄用了很多功能。嘗試使用jQuery Migrate 1.1.1或降級到1.8.3

+0

謝謝gmartellino - 不知道jQuery 1.9.1有兼容性問題 - 從現在開始使用1.8.3來保證安全。 – 2013-03-17 16:53:02