[英]Returning only the first node when parsing XML using jQuery
我希望我的jQuery脚本仅返回它找到的顶部节点,而不是遍历所有节点。 我要在jQuery脚本中进行哪些更改以实现此目的? 我知道它与each(function) {}
但是我不知道到底应该改变什么。 提前致谢!
jQuery代码:
$.ajax({
url: 'xml/timeline.xml',
dataType: 'xml',
success: function(data) {
$(data).find('channel item').each(function() {
var fbFeedWrapper = $('<div/>').addClass('fb-feed-wrapper');
var fbFeedItem = $('<div />').addClass('fb-feed-item');
$('.socialmedia-list#simlearn').append(fbFeedWrapper);
fbFeedWrapper.append(fbFeedItem);
var url = $(this).find('link').text();
var title = $(this).find('title').text();
fbFeedItem.append($('<h1/>').html("<a href='" + url + "'>" + title + "</a>"));
var fbItemIcon = $('<div />').addClass('fb-item-icon');
fbFeedItem.append(fbItemIcon);
var description = $(this).find('description').text();
if (description.length > 80) {
description = description.substr(0, 80) + "...";
}
fbFeedItem.append($('<div/>').addClass('fb-item-details').html(description));
})
}
});
XML档案格式:
<channel>
<item> // <-- If i Only want the top <item> node returned what should i do?
<title></title>
<link></link>
<description></description>
</item>
<item>
<title></title>
<link></link>
<description></description>
</item>
<item>
<title></title>
<link></link>
<description></description>
</item>
而不是使用.each();
只需找到匹配元素中的第一个即可。 为该对象分配一个变量,然后从.each()
内部this
引用更改为变量的名称。
示例(在示例中,我将变量命名为self
):
更改行:
$(data).find('channel item').each(function() {
成为 :
var self = $(data).find('channel item').first();
然后将所有出现的this
更改为“ self
。 还要删除.each
函数( })
的结尾括号和括号)
$.ajax({
url: 'xml/timeline.xml',
dataType: 'xml',
success: function (data) {
var self = $(data).find('channel item').first();
var fbFeedWrapper = $('<div/>').addClass('fb-feed-wrapper');
var fbFeedItem = $('<div />').addClass('fb-feed-item');
$('.socialmedia-list#simlearn').append(fbFeedWrapper);
fbFeedWrapper.append(fbFeedItem);
var url = $(self).find('link').text();
var title = $(self).find('title').text();
fbFeedItem.append($('<h1/>').html("<a href='" + url + "'>" + title + "</a>"));
var fbItemIcon = $('<div />').addClass('fb-item-icon');
fbFeedItem.append(fbItemIcon);
var description = $(self).find('description').text();
if (description.length > 80) {
description = description.substr(0, 80) + "...";
}
fbFeedItem.append($('<div/>').addClass('fb-item-details').html(description));
}
});
尝试这个:
$(data).find('channel item[0]')
//--------------------^^^-----add [0] to this
或:first
:
$(data).find('channel item:first')
或:eq()
:
$(data).find('channel item:eq(0)')
即使您可以尝试这样做:
$(data).find('item:eq(0)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.