我正在在一个页面上工作,该页面将显示各种RSS feed,并带有标签导航,以显示不同的RSS提要。在大多数情况下,我的一切都可以正常工作。但是,在页面顶部,我有一个标题,上面说明了为RSS提供的资源名称。
我使用的是一个全局变量来存储链接指向函数中创建链接的资源的链接。但是,目前只是导致所有标头链接到同一资源。
var link = null;
$.fn.rssFeedTopic = function(topicId) {
switch(topicId) {
case 'topHeadlines':
link = "https://news.google.com/news?cf=all&hl=en&pz=1&ned=us";
$("#topHeadlines").rssfeed('https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&output=rss', "Google News ", {limit: 6, date:true});
break;
case 'topMDHeadlines':
link = "http://wtop.com/region/local/maryland/";
$("#topMDHeadlines").rssfeed('http://wtop.com/region/local/maryland/feed/', "WTOP - Maryland Stories ", {limit: 6, date:true});
break;
case 'topBusinessHeadlines':
link = "https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&topic=b";
$("#topBusinessHeadlines").rssfeed('https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&topic=b&output=rss', "Google News - Business ", {limit: 6, date:true});
break;
case 'topSportsHeadlines':
link = "https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&topic=s";
$("#topSportsHeadlines").rssfeed('https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&topic=s&output=rss', "Google News - Sports ", {limit: 6, date:true});
break;
}
};
这是一个带有完整代码的小提琴。
我仍在学习jQuery,所以我怀疑我可能做错了什么。让我知道。
您的方法的问题是,标题的HTML代码是异步创建的。您正在通过每个选项卡的数据进行迭代,将全局变量"链接"设置为URL,然后创建每个选项卡的HTML代码,但 html代码仅在加载JSON数据 - 到那个时候,您的循环已经完成了迭代,最后一个值分配给 link 在循环(体育页面(中,每个选项卡都使用。
您可以通过摆脱全局变量并将链接URL作为您的 rssfeed jQuery插件的附加选择来解决此问题:
$("#topHeadlines").rssfeed(
'https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&output=rss',
"Google News ",
{
limit: 6,
date:true,
link: "https://news.google.com/news?cf=all&hl=en&pz=1&ned=us"
}
);
在您的_callback函数中:
html += '<div class="rssHeader">' +
'<a href="' + options.link + '" ' +
'title="' + news + '">' + news + '</a></div>';
这是您的小提琴的更新版本:https://jsfiddle.net/pahund/ltqlo7ly/1/