使用jQuery提供XML子级和自动id

时间:2014-06-05 09:56:14

标签: jquery xml

有人知道如何使用jQuery为孩子提供XML和自动ID吗?

这样它就可以用来识别那个孩子

例如,如果我有像这样的xml

<parent>

   <child title="test"/>
   <child title="test"/>

</parent>

然后在HTML中它将被编译为看起来像这样

<p id=1>test</p>
<p id=2>test</p>

这是我使用jquery

function Template(xml) {

    $(xml).find('parent').each(function () {
        var body = $('body').addClass('nobg');

         $(xml).find('child').each(function() {

            var count = 1;

            if ($(this).attr('title') > '') {
               var title = $('<p></p>').appendTo(body);
               headline.attr('id'), (count++));
            }
       })
   })
}

正如您所看到的那样,它只是在字段

中放置一个id为1

3 个答案:

答案 0 :(得分:2)

我相信这是你正在寻找的。

我移动了count的声明,并将titleText添加到新段落中。

function Template(xml) {
    var count = 1;
    $(xml).find('parent').each(function () {
        var body = $('body').addClass('nobg');

         $(xml).find('child').each(function() {
            var titleText = $(this).attr('title');
            if (titleText.length > 0) {
                var title = $('<p></p>').appendTo(body);
                title.append(titleText);
                headline.attr('id', (count++));
            }
       })
   })
}

修改:修复了A Wolff确定的问题

答案 1 :(得分:0)

count的范围只是您正在处理的单个孩子。将其移至更高的范围:

$(xml).find('parent').each(function () {
    var body = $('body').addClass('nobg');

    var count = 1;

     $(xml).find('child').each(function() {

        if ($(this).attr('title') > '') {
           var title = $('<p></p>').appendTo(body);
           headline.attr('id'), (count++));
        }
    })
})

另外,为了安全起见,我会将count++替换为++count,因为您需要在{{1}}之前使用它来递增。不过,在您的情况下,这是纯粹的可读性。

答案 2 :(得分:0)

使用前缀++计数。它首先递增

function Template(xml) {

    $(xml).find('parent').each(function () {
        var body = $('body').addClass('nobg');

         $(xml).find('child').each(function() {

            var count = 1;

            if ($(this).attr('title') > '') {
               var title = $('<p></p>').appendTo(body);
               headline.attr('id'), (++count));
            }
       })
   })
}