Xml 从JQuery中的单个变量中提取部分信息
我正在使用jquery拉入一个XML提要。问题在于,所有信息都位于单个节点下:Xml 从JQuery中的单个变量中提取部分信息,xml,jquery,xhtml,Xml,Jquery,Xhtml,我正在使用jquery拉入一个XML提要。问题在于,所有信息都位于单个节点下: <description><![CDATA[<div class="element element-date first"> Friday, 09 August 2013</div> <div class="element element-textarea"> <p>CES MMA Champion Mike "The Beas
<description><![CDATA[<div class="element element-date first">
Friday, 09 August 2013</div>
<div class="element element-textarea">
<p>CES MMA Champion Mike "The Beast" Campbell (13-4, Providence, RI.), Dinis "Sweetbread" Paiva (E. Providence, RI.), Keith "Sonic Boom" Jeffrey (9-2, Pawtucket, RI.) and more!</p></div>
<div class="element element-link last">
<a href="http://www.ticketmaster.com/ces-mma-presents-live-cagefighting-lincoln-rhode-island-08-09-2013/event/01004ACBB23C9DC4?artistid=1765605&majorcatid=10004&minorcatid=830" title="Click here to buy tickets!" target="_blank" >Click here to buy tickets!</a></div>]]></description>
我添加了var-eDate=[]代码>和其余声明的变量
我试图获取的信息没有包装在标签中,这会导致问题吗?
如果是这样的话,是否有必要添加它们?我不认为我真的可以编辑传入的数据格式,但我也会将此作为一个选项进行研究。您的选择器应该是这样的-
var $divElements = $('.element.element-date.first');
这样,您就不需要编写自己的循环,(请参阅)您遇到的另一个问题是,当您看到class=“class1 class2 class3”时,您在jQuery和CSS中使用了。在每个类之前(因为class属性中由空格分隔的值在功能上是不同的CSS类)。将选择器传递给find
,而不是jQuery对象
var divSelector = '.element.element-date.first';
...
for (var x = 0; t <= i; x++) {
alert($(desc[t]).find(divSelector).text());//try also $.parseHTML(desc[t])
}
var-divSelector='.element.element-date.first';
...
对于(var x=0;t而言,主要问题在于您感兴趣的内容实际上包装在CDATA节中,因此这些节点的dom树中没有层次结构,而只有一个节点表示CDATA中的整个文本。
此外,CDATA中的内容没有自己的根,因此在传递到jquery时不会计算为xml结构,这一事实使它变得更加复杂
一个简单的解决方案是从
desc[i]=$(this).find('description').text();
像这样:
desc[i]=“”+$(this).find('description').text()+“”;
将for循环表达式修复为后,警报将正确显示日期
for(var t=0;t
并将选择器替换为普通选择器
var divElements='.element.element日期.first';
可能还有其他更好的解决方案,但我测试了这个,它是有效的
更新:觉得代码需要一些清理。没有理由让所有这些数组都四处浮动,再进行一点重构
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://twinriver.com/index.php/entertainment/twin-river-event-center/feed/rss/events/event-center?format=feed",
dataType: "xml",
success: function (xml) {
$(xml).find('item').each(function () {
var title = $(this).find('title').text();
var desc = "<rootnode>" + $(this).find('description').text() + "</rootnode>";
var date = $(desc).find('.element.element-date.first').text()
$('#EventList').append('<span class="title">' + title + '</span>' + '<br />' + '<br />' + '<span>' + date + '<br />' + '<br />');
});
}
});
});
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“http://twinriver.com/index.php/entertainment/twin-river-event-center/feed/rss/events/event-center?format=feed",
数据类型:“xml”,
成功:函数(xml){
$(xml).find('item').each(函数(){
var title=$(this.find('title').text();
var desc=“”+$(this.find('description').text()+”;
var date=$(desc.find('.element.element-date.first').text()
$(“#事件列表”).append(“”+title++'
'++'
'++'
'++'+date++'
'++'
');
});
}
});
});
我该如何调用desc[]var,因为这是存储信息的地方?啊,我误解了你的代码,Boris的回答包括了我错过的关键位!
var $divElements = $('.element.element-date.first');
$('.element.element-date.first').each(function() {
$(this).text(); // In each iteration this will get you the date
});
var divSelector = '.element.element-date.first';
...
for (var x = 0; t <= i; x++) {
alert($(desc[t]).find(divSelector).text());//try also $.parseHTML(desc[t])
}
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://twinriver.com/index.php/entertainment/twin-river-event-center/feed/rss/events/event-center?format=feed",
dataType: "xml",
success: function (xml) {
$(xml).find('item').each(function () {
var title = $(this).find('title').text();
var desc = "<rootnode>" + $(this).find('description').text() + "</rootnode>";
var date = $(desc).find('.element.element-date.first').text()
$('#EventList').append('<span class="title">' + title + '</span>' + '<br />' + '<br />' + '<span>' + date + '<br />' + '<br />');
});
}
});
});