【问题标题】:Jquery attr selectjQuery attr 选择
【发布时间】:2011-09-05 19:25:28
【问题描述】:

我正在解析一个看起来像这样的 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'。我正在尝试获取与内容中的标题对应的链接

【问题讨论】:

  • 只是一个建议,解析xml时总是使用.parseXML:)

标签: jquery src attr


【解决方案1】:

尝试改变

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

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

(+ 你没有“xml”变量。)在你更正它之后, 它应该可以正常工作

【讨论】:

    【解决方案2】:

    改变

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

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

    attr 是一个 jQuery 方法,当你 $(xml).find('content')[index] 它会给你 xml 节点。 jQuery 有eq 方法,它接受一个整数作为参数,并从匹配的元素集中返回该索引处的元素。

    【讨论】:

    • jsFiddle 有时会卡住(5 秒):)
    【解决方案3】:

    除了 [] 给你一个 DOM 节点而不是一个 jQuery 包装器之外,你还有两个问题:

    $(xml)
    

    $() 是解析 HTML 并从中创建节点的快捷方式。但是您的内容不是 HTML,而是 XML,如果您尝试将其解析为 HTML,您会混淆浏览器(尤其是 IE)。使用$.parseXML()解析XML。

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

    避免纯数字ids,它们是无效的并且会混淆浏览器。无论如何,您无需查找id,只需使用对已获得节点的引用即可,例如$('&lt;div/&gt;', {text: $(this).text()}).appendTo('#container');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      相关资源
      最近更新 更多