2015-10-16 55 views
0

使用此我能夠加載包含名稱的產品,但是當我想根據索引附加特定名稱時,我得到重複項,非常感謝。附加.eq()導致重複

<?xml version="1.0" ?> 
<catalogue> 
    <product> 
     <name>Cleaner</name> 
     <description>Simple Desgreaser</description> 
     <price>$100</price> 
     <image>images/lol1.png</image> 
    </product> 
    <product> 
     <name>CSanitiser</name> 
     <description>Simple Sanitiser</description> 
     <price>$200</price> 
     <image>images/lol1.png</image> 
    </product> 
</catalogue> 
function catalogueData2() { 
    $.ajax({ 
     type: "GET", 
     url: "catalogueData.xml", 
     dataType: "xml", 
     success: function(xml) { 
     $(xml).find('product').each(function(){ 
      var name = '<p>Name: '+$(xml).find("name:eq(0)").text()+'</p>'; 
      $("div#name").append(name); 
      }); 
     } 
    }); 
} 
+0

你是什麼意思「附加一個基於索引的特定名稱」?代碼中的索引在哪裏? – Barmar

+0

指已更新的帖子。我希望選擇我想追加的產品。但到目前爲止,當我這樣做使用「eq(0)」它顯示重複。 – kouvouti

回答

1

$(xml).find("name:eq(0)")是在XML的第一個名字,而不是在.each()迭代當前產品的第一個名字。使用$(this).find("name:eq(0)")僅搜索當前元素。

關於選擇特定的指數,也許這樣的事情是你想要什麼:

function catalogData2(index) { 
    $.ajax({ 
     type: "GET", 
     url: "catalogueData.xml", 
     dataType: "xml", 
     success: function(xml) { 
      var name = '<p>Name: ' + $(xml).find("name").eq(index).text() + '</p>'; 
      $("div#name").append(name); 
     } 
    }); 
} 

有了這個,catalogData2(0)將追加Cleaner,並catalogData2(1)將追加Sanitizer

+0

選定的人在哪裏確定? – Barmar

+0

它在每個函數中被確定並被同時附加。 – kouvouti

+0

我的意思是,它是如何知道哪一個被選中的,所以只有那一個應該被退回?你的功能不會說明哪個產品被選中。 – Barmar