2012-06-28 56 views
2

的一些日子i'm這個問題作鬥爭:使用jQuery從XML提取數據,並將其放在谷歌地圖V3作爲i'm標誌物,但它不放在Chrome和Opera任何標誌,一些調試後我發現問題是在這行:jQuery的+ XML +谷歌地圖適用於FF/IE,但沒有在Chrome /歌劇

var lat = $(this).find("geo\\:lat").text();  
    var lng = $(this).find("geo\\:long").text(); 

在XML是,我需要刪除「:」。

雖然在FF和IE中「\」刪除「:」完美的作品,在Chrome和Opera不工作..但如果我去XML並從該字段中刪除「:」,並使用代碼這條線,它完美的作品。

var lat = $(this).find("geolat").text();  
    var lng = $(this).find("geolong").text(); 

這是一個簡化版本,複製了關於Chrome和Opera http://dl.dropbox.com/u/15802004/teste.zip 錯誤複製錯誤,這是註釋/取消註釋行。

//url: "teste1.xml",  
    url: "teste2.xml", 

(and...)   

    //var lat = $(this).find("geo\\:lat").text();    
    //var lng = $(this).find("geo\\:long").text();    
     var lat = $(this).find("geolat").text();  
     var lng = $(this).find("geolong").text(); 

我感謝所有幫助

+0

謝謝回答,但didint工作,仍然工作在FF,但無法在Chrome /歌劇。我使用PHP函數將XML下載到我的服務器,也許我最後的希望是在使用PHP在jQuery中調用它之前,從XML中刪除「:」。但我真的想在不改變XML的情況下解決這個問題,有沒有其他方法可以刪除jQuery中的「:」? – user1320951

+0

感謝您的更新。它給出了一個錯誤: 「$(本).replace不是一個函數」 – user1320951

+0

'$(本).find( '地理:LAT')replaceWith( 'geolat')。 $(本).find( '地理:長')。replaceWith( 'geolong'); VAR LAT = $(本).find( 'geolat')文本()。 VAR LNG = $(本).find( 'geolong')文本();' – HanhNghien

回答

0

這是一個已知的,但仍然不固定的錯誤。

您可以改用getElementsByTagNameNS()(適用於FF,Chrome & Opera)和$.find()作爲IE的後備。

geo:lat

例子:

var lat =(($.browser.msie) 
      ? $(this).find('geo\\:lat') 
      : $(this.getElementsByTagNameNS('http://www.w3.org/2003/01/geo/wgs84_pos#','lat')) 
     ).text();