2016-02-09 74 views
0

我得到了這個地理位置的工作,但如果我把它放在WordPress,它停止工作。 這有什麼問題?Javascript與WordPress的衝突

http://jsfiddle.net/spzg5oL8/3/

$.get("http://freegeoip.net/json/", function (response) { 
    $("#ip").html("IP: " + response.ip); 
    //$("#country_code").html(response.country_code); 
    document.getElementsByClassName(response.country_code)[0].style.display = "block"; 
}, "jsonp"); 
+0

你是什麼意思「停止工作」?你看到你的控制檯有任何錯誤嗎? (點擊F12查看控制檯) –

+0

橙色盒子只會顯示給我們和ca的用戶,它在jsfiddle上工作正常,我可以看到橙色盒子和im在我們身上,但是當我把它放在頁腳中我的網站使用WordPress的模板我沒有看到那個橙色框,我看着控制檯沒有看到任何JS錯誤 – user2309197

+0

再次,你看到你的控制檯中的任何錯誤? –

回答

2

這不會在WordPress工作的原因之一(肯定的),而另一個原因(可能):

首先,你不能在WordPress使用$ jQuery的。 WordPress的負載jQuery的「無衝突」模式,這意味着你必須使用jQuery或卷本的文件準備好方法「注入」的$

jQuery(function($) { 
    $.get("http://freegeoip.net/json/", function (response) { 
     $("#ip").html("IP: " + response.ip); 
     //$("#country_code").html(response.country_code); 
     // Why don't you use jQuery here, for simplicity? 
     // $('.' + response.country_code).style('display', 'block'); 
     document.getElementsByClassName(response.country_code)[0].style.display = "block"; 
    }, "jsonp"); 
}); 

其次,你必須要確保的jQuery是您的WordPress網站上的加載。不管你做什麼,做只是硬編碼在網站的標題中jQuery的一個環節,而是在functions.php文件的主題(或插件)添加下面的PHP:

add_action('wp_enqueue_scripts', 'load_my_scripts'); 

function load_my_scripts() { 
    wp_enqueue_script('jquery'); 
} 
+0

感謝cale_b,另一件事是網站是在SSL上,所以「http://freegeoip.net/json/」被封鎖,我更新了腳本和functions.php像你現在建議它的工作完美 – user2309197

0

添加什麼@cale_b說,你可以看到呼叫jQuery.noConflict();爲WordPress的的jQuery的文件的最後一行:

/wp-includes/js/jquery/jquery.js 

我沒有在文檔中發現任何明確的,但看到它的代碼可以幫助知道什麼是發生。