2011-03-18 71 views
0

我可以用jquery解析xml。現在我想要解析的文本是一個超鏈接而不是簡單的文本。以下是我寫的。添加一個鏈接到一個XML標籤,並用jquery解析它

$(xml).find("customers") 
    .each(function(){ 
      $("#guys").append("<div class="mybox"><a href="+$(this).find('customer_link').text()+"target="_blank">"+$(this).find('customer_company').text()"</a></div>");                      

}); 

這裏是XML

<customer_company><![CDATA[Google<br>]]></customer_company> 
    <customer_link>http://www.google.com</customer_link> 

</myguys> 

<myguys> 

    <customer_company><![CDATA[EMC<br>]]></customer_company> 
    <customer_link>http://www.emc.com</customer_link> 

</myguys> 
</info> 

我知道有沒有錯的邏輯,我認爲這僅僅是與標籤語法錯誤。有誰能告訴我在哪裏,我在這裏做了一個錯誤,指向我一個很好的教程

+0

我已經爲你編輯了它,但是建議你多花一點時間把代碼放在一邊,如果你再次發佈。 :-) – 2011-03-18 14:58:54

回答

1

您在混合引用樣式。單引號(')字符串可以包含未轉義的雙引號("),反之亦然。在雙引號字符串中使用雙引號會破壞您的代碼。

$("#guys").append("<div class="mybox"><a href="+$(this).find('customer_link') 
ss^ se^  ss^   se^ ss^  se^   ss^   se^ 

.text()+"target="_blank">"+$(this).find('customer_company').text()"</a></div>"); 
     ss^  se^ ss^e^   ss^    se^  ss^  se^ 

ss == string start, 
se == string end 

你可以看到這是如何創建隨機未定義的引用,像mybox,但不建立你想要的字符串。 試試這個:或者

$("#guys").append("<div class='mybox'><a href=" + 
    $(this).find("customer_link").text() + 
    "' target='_blank'>" + 
    $(this).find("customer_company").text() + 
    "</a></div>"); 

,你可以使用jQuery建立的所有元素,並完全避免與嵌入在字符串引號的屬性:

$("#guys").append($("<div />") 
         .addClass("mybox") 
         .append($('<a/>', { 
          href: $(this).find("customer_link").text(), 
          target: "_blank", 
          text: $(this).find("customer_company").text() 
         }))); 

在XML中CDATA將會導致jQuery的問題,因爲它解析xml就像是html,而不是根據xml規範。如果您無法從customer_company元素中刪除CDATA<br>,那麼使用像jParse這樣的插件解析xml可能會更好。

+0

你的代碼將所有鏈接標籤爲每個標籤。我的意思是當我點擊谷歌。它打開http://www.google.comhttp://www.google.com和emc也打開http://www.google.comhttp:// www .google.com – singularity 2011-03-18 15:05:56

+0

@singularity,它似乎爲我工作 - 這裏是[用jQuery構建的元素的小提琴](http://jsfiddle.net/q6WgG/1/)和[字符串示例的小提琴](http ://jsfiddle.net/NZEuk/) – jball 2011-03-18 15:19:48

+0

@singularity,我注意到我的字符串示例中有一個輸入錯誤,所以它被修復了,我在第二個示例中引用了「customer_link」作爲鏈接文本,所以我更新了當我使用代碼的第一個版本時, – jball 2011-03-18 15:21:58

0

有一個在你的代碼片段:

$("#guys").append("<div class="mybox">....... 

您要關閉的標籤時,你可能穿上」有意要:

試試這個:

$("#guys").append("<div class='mybox'>....... 

你需要更加仔細地考慮了一下,雖然,因爲你在你的字符串一些報價單後。

+0

它是如何在jQuery中有所作爲的。我知道在Java/C/C++中使用單引號或雙引號是可以的 – singularity 2011-03-18 14:59:26

+0

第二個「關閉字符串,因此,有效的是,你可以在可解釋的代碼中間懸掛一個'mybox' – 2011-03-18 15:20:43

相關問題