Jquery не может проанализировать все дочерние элементы / вложенные теги и его атрибут из XML - PullRequest
1 голос
/ 30 января 2011

У меня есть страница, на которой перечисляются подробности о новостях журнала, но иногда может быть одна ссылка на конкретный журнал, а в других случаях их может быть больше одного.доходит до дочерних элементов / вложенных тегов ссылок .... все портит.Он не перечисляет все дочерние узлы.

HTML

    <script>
      $(document).ready(function(){
   $.ajax({
    type: "GET",
    url: "news.xml",
    cache: false,
    dataType: "xml",
    success: function(xml) {
     $(xml).find('item').each(function(){
      var id = $(this).attr('id');
      var title = $(this).find('title').text();
      var date = $(this).find('date').text();      
      var description = $(this).find('description').text();

       if(description.length >= 250){
       description = description.substring(0, 250)+ '...';
      }   

 $('#page-wrap')
 .append($('<h1 id="link_'+id+'"></h1>').html(title))
 .append($('<em></em>').html(date))
 .append($('<p></p>').html(description))
 .append($('<p></p>').html(name));


      $(this).find('links').each(function(){
          var name = $(this).find('link').attr('name');
       var url = $(this).find('link').text();
      $('<a href="'+url+'">'+name+'</a>').appendTo('#page-wrap');


      });




     });
    }
   });



  });

     </script>

XML здесь

<news>
<item id="0">
<title>Main title 1</title>
<date>20 Aug 2010</date>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus nunc lacus, commodo sit amet euismod vitae, semper quis libero. Praesent nunc nibh, mollis nec elementum et, facilisis sit amet metus. Proin dignissim interdum dui vehicula dapibus. Mauris eget est sed odio blandit tempor vitae quis leo.
</description>
  <links>
   <link name="Hello">123.com</link>
   <link name="HelloJack">123.com</link>
  </links>
 </item>
  <item id="2">
    <title>Main title 2</title>
    <date>20 Aug 2010</date>
    <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus nunc lacus, commodo sit amet euismod vitae, semper quis libero. Praesent nunc nibh, mollis nec elementum et, facilisis sit amet metus. Proin dignissim interdum dui vehicula dapibus. Mauris eget est sed odio blandit tempor vitae quis leo.</description>
    <links>
      <link name="Hello">123.com</link>
    </links>
  </item>
</news>

Ответы [ 2 ]

1 голос
/ 30 января 2011

Не бери в голову исправленную проблему

изменил это:

$(this).find('links').each(function(){
      var name = $(this).find('link').attr('name');
   var url = $(this).find('link').text();
  $('<a href="'+url+'">'+name+'</a>').appendTo('#page-wrap');

К

$(this).find('link').each(function(){
      var name = $(this).attr('name');
   var url = $(this).text();
  $('<a href="'+url+'">'+name+'</a>').appendTo('#page-wrap');
0 голосов
/ 30 января 2011

Это предупредит каждый атрибут текущего селектора, без необходимости указывать, где эти атрибуты находятся где-либо еще:

$.each($(".mySelector"), function() {
    var nodes = this.attributes;
    for(var i=0; i<nodes.length; i++)
    {
      alert(nodes[i].nodeName);
      alert(nodes[i].nodeValue);
    }
});

Вы можете заменить предупреждение, например, appendTo, чтобы добавить его к элементамв контейнере.Дайте мне знать, если вам нужно больше разъяснений.

...