JQuery attr выберите - PullRequest
       50

JQuery attr выберите

0 голосов
/ 05 сентября 2011

Я анализирую XML, который выглядит следующим образом

<title>abc</title>
<summary>abc</summary>
<content type='application/atom+xml' src='abc'/>
<link rel='alternate' type='application/atom+xml' href='abc'/>
<title>abc</title>
<summary>xyz</summary>
<content type='application/atom+xml' src='xyz'/>
<link rel='alternate' type='application/atom+xml' href='xyz'/>
<title>abc</title>
<summary>abb</summary>
<content type='application/atom+xml' src='abb'/>
<link rel='alternate' type='application/atom+xml' href='abb'/>

Мой JQuery:

$title.each(function(index)
  {
    if (index != 0) 
        {
          $("#container").append('<div id=' + index + '></div></br>');
      $('#' + index).text($(this).text());
      $srcnode = $(xml).find('content')[index];
      alert($srcnode.attr('src'));
    }
}

Я получаю сообщение об ошибке, так как для элемента не найдено attr 'src'. Я пытаюсь получить ссылку, соответствующую заголовку, который находится в содержании

Ответы [ 3 ]

1 голос
/ 05 сентября 2011

попробуйте изменить

  $srcnode = $(xml).find('content')[index];

на

  $srcnode = $(xml).find('content').eq(index);

(+ у вас нет переменной "xml".) После того, как вы исправите ее, она должна работать правильно, тогда

0 голосов
/ 05 сентября 2011

В дополнение к [] предоставлению вам узла DOM, а не оболочки jQuery, у вас есть еще две проблемы:

$(xml)

$() - это ярлык для разбора HTML и создания узлов из него. Но ваш контент - это не HTML, а XML, и если вы попытаетесь разобрать его как HTML, вы запутаете браузер (особенно если это IE). Используйте $.parseXML() для разбора XML.

'<div id=' + index + '></div></br>'

Избегайте чисто числовых id s, они недопустимы и могут запутать браузеры. В любом случае вам не нужно искать id, вы можете просто использовать ссылку на уже полученный узел, например, $('<div/>', {text: $(this).text()}).appendTo('#container');.

0 голосов
/ 05 сентября 2011

Изменение

$srcnode = $(xml).find('content')[index];

Для

$srcnode = $(xml).find('content').eq(index);

attr - это метод jQuery, когда вы $(xml).find('content')[index] дадут вам узел xml. В jQuery есть метод eq, который принимает целое число в качестве параметра и возвращает элемент по этому индексу из соответствующих наборов элементов.

...