2010-09-09 16 views
0

一個XML文件,我有一個像XML文件標籤:如何獲得整個文本,包括從與jQuery

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<legends> 
<legend> 
<number>1</number> 
<legendString><ul><li>1.across:a system of rules of conduct or method of practice</li><li>1.down:a disagreement or argument about something important</li><li>2.down:any broad thin surface</li><li>3.across:the passage of pedestrians or vehicles </li></ul></legendString> 
</legend> 
...... 
<legends> 

我怎麼能走整個文本,包括使用jQuery的標籤。 字符串

<ul><li>1.across:a system of rules of conduct or method of practice</li><li>1.down:a disagreement or argument about something important</li><li>2.down:any broad thin surface</li><li>3.across:the passage of pedestrians or vehicles </li></ul> 

如果我進行函數調用,應該傳遞。 如果我稱之爲:

var legendStr = $(this).find("legendString").text(); 

標籤將不會出現在legendStr。

我該怎麼做。

這是jQuery腳本:

var randomnumber=Math.floor(Math.random()*233); 
    $.get("legends.xml",{},function(xml){ 



     $(xml).find("legend").each(function(){ 


       if(randomnumber == $(this).find("number").text()) 
       { 
       var c = "legendString"; 

       var legendStr = $(this).find(c).html();   


       $("#sidebar > ul").html(legendStr); 
       } 



     }); 
     },"xml"); 

回答

1

你想 $(本).find( 「legendString」)。HTML()

我把在jQuery的對XML的支持一探究竟。 .html()不支持XML文檔。因此,您需要使用traversing methods和/或XML DOM

因此,舉例來說,你可以做一個深度優先遍歷,直到你找到一個文本節點(即nodeType == 3),並且可以使用nodeName(如<ul>)和.text()獲取標籤名和文本。

0

嘗試使用.html()方法來保存標籤:

var legendStr = $(this).find('legendString').html(); 

另外請注意,.find('legendString')將尋找一個名爲legendString標籤,它可能不是你正在找。您可能需要:contains()選擇器。

+0

這是行不通的。 – Vinod 2010-09-09 06:33:37

+0

*不工作*不是一個非常準確的問題描述。你能發表一個完整的片段來說明這個問題嗎? – 2010-09-09 06:39:04

+0

你可以看看更新的代碼。 – Vinod 2010-09-09 06:58:00

0

我不認爲你需要的功能是在jQuery開箱即用。但你可以自己寫。這裏是您的出發點:

jQuery.extend(jQuery.fn, { 
outerHtml: function(tagName) { 
    var matches = this.find(tagName); 
    var result = ''; 
    for (var i=0; i<matches.length; i++) { 
     var el = matches[i]; 
     result += '<' + tagName; 

     for (var i=0; i<el.attributes.length; i++) { 
      result += ' '; 
      result += el.attributes[i].name; 
      result += "='"; 
      result += el.attributes[i].value; 
      result += "'"; 
     } 
     if (el.innerHTML == null) { result += '/>'; } 
     else { 
     result += '>'; 
     result += el.innerHTML; 
     result += '</' 
     result += tagName; 
     result += '>'; 
    } 
    return result; 
} 

}});

這樣,你就能夠做到

var legendString = $(this).outerHtml('legendString');