2011-09-05 60 views
0

我解析XML,看起來像這樣jQuery的ATTR選擇

<title>abc</title> 
<summary>abc</summary> 
<content type='application/atom+xml' src='abc'/> 
<link rel='alternate' type='application/atom+xml' href='abc'/> 
<title>abc</title> 
<summary>xyz</summary> 
<content type='application/atom+xml' src='xyz'/> 
<link rel='alternate' type='application/atom+xml' href='xyz'/> 
<title>abc</title> 
<summary>abb</summary> 
<content type='application/atom+xml' src='abb'/> 
<link rel='alternate' type='application/atom+xml' href='abb'/> 

我的jQuery:

$title.each(function(index) 
    { 
    if (index != 0) 
     { 
      $("#container").append('<div id=' + index + '></div></br>'); 
     $('#' + index).text($(this).text()); 
     $srcnode = $(xml).find('content')[index]; 
     alert($srcnode.attr('src')); 
    } 
} 

我得到的錯誤,因爲沒有ATTR 'src' 中發現的元素。我試圖獲取與目標是在內容的鏈接

+0

只是一個建議,當你解析xml時總是使用'.parseXML':)' – Rafay

回答

1

嘗試改變

$srcnode = $(xml).find('content')[index]; 

$srcnode = $(xml).find('content').eq(index); 

(+你有沒有「XML」變量)。之後你改正它, 它應該正常工作,然後

0

變化

$srcnode = $(xml).find('content')[index]; 

$srcnode = $(xml).find('content').eq(index); 

attr是一個jQuery方法,當你$(xml).find('content')[index]它會給你的XML節點。 jQuery有eq方法,它接受一個整數作爲參數,並從匹配的元素集返回該索引處的元素。

+1

哈哈。快5秒! :) – genesis

+1

jsFiddle卡住有時(5秒):) – ShankarSangoli

+0

美女..謝謝! – Gaurav

0

除了[]給你一個DOM節點,而不是一個jQuery的包裝,你有兩個進一步的問題:

$(xml) 

$()是解析HTML並從它創建節點的快捷方式。但是你的內容不是HTML,它是XML,如果你試圖把它解析爲HTML,你會混淆瀏覽器(特別是IE瀏覽器)。使用$.parseXML()解析XML。

'<div id=' + index + '></div></br>' 

避免純粹的數字id S,它們不是有效的,可以混淆瀏覽器。無論如何,您無需查找id,只需使用對已有節點的引用即可,例如$('<div/>', {text: $(this).text()}).appendTo('#container');

相關問題