我有一个页面列出了杂志新闻的详细信息,但有时会有一个指向特定杂志的链接,有时可能会有不止一个。
问题是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 here
<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>
答案 0 :(得分:1)
没关系修复问题
改变了这个:
$(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');
答案 1 :(得分:0)
这将警告当前选择器的每个属性,而不必指定其他任何位置的属性:
$.each($(".mySelector"), function() {
var nodes = this.attributes;
for(var i=0; i<nodes.length; i++)
{
alert(nodes[i].nodeName);
alert(nodes[i].nodeValue);
}
});
您可以将警报替换为例如appendTo,以将其添加到容器中的元素。如果您需要更多说明,请告诉我。