2010-02-10 45 views
0

基本上,我正在解析一个xml文件并使用每个函数从该xml文件中检索某些元素。不过,我现在只需要返回第一个值,而不是“每个”值。如果有人可以帮助它会很棒。从jQuery中检索一个元素每个函数

到目前为止的代码:

// basic ajax call to retrieve xml file - then on success sent over to checkNotDate function 
$('#notifyBox').empty(); 
    $.ajax ({ 
     type: "GET", 
     url: "anyFeed.xml", 
     datatype: "xml", 
     success: checkNoteDate 
}); 
// parse xml and display in alert 

function checkNoteDate (xml) { 
    $(xml).find("entry").each(function() 
    { 
     var $item = $(this); 
     var title = $item.find("title").text(); 
     var link = $item.find("link").attr("href"); 
     var output = "<a href=\"" + link + "\" target=\"_self\">" + title + "<\/a>" + "<br />"; 
     alert(output); 
    }); 
} 

因此,所有我需要做的是刚刚获得的第一个值,并保存到一个变种。

回答

1

只需选择使用find()的第一个元素:

var $item = $(xml).find('entry:first'); 

或使用一些类似的语法:

var $item = $(xml).find('entry').eq(0); 
var $item = $('entry:first', xml); 
var $item = $('entry', xml).eq(0); 

都做同样的事情。

此外,您可能刚在each语句末尾返回false,这会导致循环在第一次迭代后停止。这只会影响第一个对象的效果,但使用上面提到的方法当然更清晰。

+0

Cheers Tatu今天早上我会试一试,让你知道我的相处方式。万分感谢 – jonnyhitek 2010-02-11 08:57:40

+0

感谢家伙得到了它 - 不知道这是否是最巧妙的实现,但这里的下面是什么工作: \t功能checkNoteDate(XML){ \t $(XML).find(“项:第一”) \t { \t var $ item = $(this); \t var title = $ item.find(“title:first”)。text(); \t var link = $ item.find(“link:first”)。attr(“href”); \t var output =“”+ title +“<\/a>”+“
”; \t alert(输出); \t \t } \t} \t}); –
jonnyhitek 2010-02-11 11:33:50

+0

我很惊讶,这工作。你不需要使用'var $ item = $(this)',只需要执行'var $ item = $(xml).find('entry:first')''。 – 2010-02-11 13:17:56

相关问题