Jquery не может анализировать все дочерние элементы/вложенные теги и их атрибуты из XML

У меня есть страница, на которой перечислены подробности новостей журнала, но иногда будет одна ссылка на конкретный журнал, а иногда может быть более одной.

Проблема в том, что jquery отлично анализирует XML, но когда дело доходит до дочерних элементов/вложенных тегов ссылок.... это путается. Он не перечисляет все дочерние узлы.

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>

person user366123    schedule 30.01.2011    source источник


Ответы (2)


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

изменил это:

$(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');

TO

$(this).find('link').each(function(){
      var name = $(this).attr('name');
   var url = $(this).text();
  $('<a href="'+url+'">'+name+'</a>').appendTo('#page-wrap');
person user366123    schedule 30.01.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, чтобы добавить их к элементам в контейнере. Дайте мне знать, если вам нужно больше разъяснений.

person Calvin Froedge    schedule 30.01.2011
comment
извините, я не правильно задал вопрос, проблема, с которой я столкнулся, заключается в том, чтобы проанализировать все вложенные теги таким образом: ‹links› ‹link name=link 1›www.url1.com‹/link› ‹link name=link 2›www.url2.com‹/link› ‹/link› Из приведенного выше примера я хочу, чтобы jquery анализировал дочерние элементы ССЫЛОК… как ‹A href=name attr на ссылке1›url ссылки1‹/a› - person user366123; 30.01.2011