附加.eq()会导致重复

时间:2015-10-16 23:51:19

标签: javascript jquery xml

使用此我可以加载包含名称的产品,但是当我想根据索引追加某个名称时,我会得到重复的信息,非常感谢。

<?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);
            });
        }
    });
}

1 个答案:

答案 0 :(得分: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