javascript - 追加 .eq() 导致重复

标签 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);
            });
        }
    });
}

最佳答案

$(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) 将附加 CleanercatalogData2(1) 将附加 Sanitizer .

关于javascript - 追加 .eq() 导致重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181166/

相关文章:

jQuery fadeIn 效果不工作其适用于 2 div 的 Flicker,但显示/隐藏工作完美需要更改具有淡入淡出效果的 bg 图像

android - (Android) 如何更改 tabWidget 中选项卡的大小?

javascript - jQuery tmpl 和 DataLink 测试版

javascript - 将十进制金额转换为 Javascript 中的文本字符串分数?

javascript - 使用 Highcharts 设置启用/禁用 3D 模式

javascript - 基本 "Raw"Ajax 调用

java - 在 Java 中编写 XML FileNotFoundException

java - 在先前的 JavaScript 错误之后,正文中的脚本标签不会被评估

javascript - 为什么我可以调用同一脚本 block 中后面声明的函数,而不是后面脚本 block 中声明的函数?

javascript - 删除继承的 CSS 值?