2012-02-03 28 views
1

好了,所以,讓我們說我有一個字符串:IE7/8到新創建的jQuery對象不解析

var xmlString = '<main><id>5</id><name>test-string</name></main>'; 

然後我想這個字符串的行爲就像是一個jQuery的OBJ:

var xmlString = '<main><id>5</id><name>test-string</name></main>', 
    xmlString = $(xmlString); 

一旦我這樣做,我想找到ID節點的值:

var xmlString = '<main><id>5</id><name>test-string</name></main>', 
    xmlString = $(xmlString), 
    findIdTest = xmlString.find('id').text(), 
    filterIdTest = xmlString.filter('main').find('id').text(); 

我嘗試兩種方法,

xmlString.find('id').text()

filterIdTest = xmlString.filter('main').find('id').text(); 

在FF,鉻,和IE9,結果總是,對於這兩種方法。

在IE7和IE8,我什麼也沒有..一個(空字符串)..

有誰知道爲什麼出現這種情況..?

這裏有一個撥弄工作和解決:

http://jsfiddle.net/ZmeVY/2/

回答

3

使用jQuery.parseXML創建jQuery對象來創建一個有效的XML文檔之前。

http://api.jquery.com/jQuery.parseXML/

var xmlString = '<main><id>5</id><name>test-string</name></main>', 
    xmlDoc = $.parseXML(xmlString), 
    myObj = $(xmlDoc); 

myObj.find("id").text(); 
+0

謝謝,這樣做!我瞭解它背後的推理,但是有沒有關於爲什麼IE7和IE8需要知道該字符串應該像XML一樣對待並且IE9能夠少管理的記錄信息?出於好奇在這一點上。 – spez86 2012-02-03 15:37:41

+0

值得一讀:http://thingsinjars.com/post/371/investigating-ies-innerhtml/在IE中看起來像innerHTML(jQuery內部使用)不喜歡非標準的HTML元素。首先使用'parseXML',將一個Document Fragment傳遞給jQuery,它繞過使用'innerHTML'來更新DOM。 – 2012-02-03 16:01:12

+0

真棒東西加里!謝謝,非常感謝! – spez86 2012-02-06 20:39:06

0

什麼你要找的是$ .parseXML()函數。

試試這個:

var xmlString = $.parseXML('<main><id>5</id><name>test-string</name></main>'); 
$xmlString = $(xmlString); 
alert($xmlString.find('id').text()); 

更多的信息和例子見http://api.jquery.com/jQuery.parseXML/

希望有幫助! -Ted

胡扯淡看見有人打我給它。