开发者

retrieving distinct attributes from xml doc in jquery

In a xml document, I would like to retrieve with jQuery the distinct attributes values for "name" attribute of the elements "product", deleting the duplicates.

However, I haven't had any success with unique() function or creating an array, as suggested in this discussion here: How to use jQuery to select XML no开发者_如何学Godes with unique text content?

Any help will be sincerly appreciated. Thank you so much in advance.

My XML:

<products>
    <product name="first"></product>
    <product name="second"></product>
    <product name="first"></product>
    <product name="first"></product>
</products>

My not working code:

function getName() {

    $.ajax({
        type: "GET",
        url: xmlFile.xml,
        dataType: "xml",
        success: function(xml) {
            $(xml).find('product').each(function(){

                        var name = $(this).attr('name');
                        var productArray = new Array();
                        if( jQuery.inArray(name, productArray) == -1 ){
                            $('<p></p>').html(name).appendTo('body');
                            productArray.push(name);
                        }
            });
        }
    });
}


productArray is gettin defined for each iteration of the product element and hence the inArray is always returning -1.

Move the definition of productArray outside the each loop i.e.:

function getName() {
        $.ajax({
            type: "GET",
            url: xmlFile.xml,
            dataType: "xml",
            success: function(xml) {
                        var productArray = new Array();
                $(xml).find('product').each(function(){

                            var name = $(this).attr('name');
                            if( jQuery.inArray(name, productArray) == -1 ){
                                $('<p></p>').html(name).appendTo('body');
                                productArray.push(name);
                            }
                });
            }
        });
    }


First idea that comes to my head... Have you tried setting your var "productArray" global? I mean, outside of your 'each' function body? I would suspect that productArray is reset each time the code reach that point, so that it will never contain duplicated entries.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜