我正在使用jQuery:contains()选择器来显示我的XML文件中包含特定文本字符串的项目。它适用于FF,Safari,Chrome等,但不适用于IE7,8或9.任何想法?
jQuery(RSSqa).find("item:contains('Q & A with'):lt(1)").each(function(){
这段代码显示XML中带有“Q& A with”的最新项目。
以下是一些RSS提要
<rss version="2.0">
<channel>
<title>Headlines</title>
<link>Coyotes</link>
<description>Coyotes</description>
<lastBuildDate>Fri, 17 Jun 2011 16:54:44 EDT</lastBuildDate>
<item>
<title>Q & A with Brandon</title>
<enclosure length="63471" type="image/png" url="http://google.com/images/upload/325.jpg"></enclosure><link>http://google.com/news.htm?id=56362</link>
<description>description</description>
<author>Dave</author>
<pubDate>Tue, 24 May 2011 09:58:00 EDT</pubDate>
<guid>http://google.com/news.htm?id=56362</guid>
<comments>Brandon is a winner</comments>
</item>
<item>
<title>Q & A with Jason</title>
<enclosure length="63471" type="image/png" url="http://google.com/images/upload/323.jpg"></enclosure><link>http://google.com/news.htm?id=56363</link>
<description>description</description>
<author>Dave</author>
<pubDate>Tue, 24 May 2011 09:58:00 EDT</pubDate>
<guid>http://google.com/news.htm?id=56363</guid>
<comments>Brandon is a winner</comments>
</item>
</channel>
</rss>
这是整个脚本。我希望这会有所帮助。
jQuery(document).ready(function()
{
jQuery.get('news.xml', function(RSSqa){ // NEWS XML
jQuery('#nrmr2.colModRight .DCnarModBody').append('<div class="DCnarModR" />');
jQuery(RSSqa).find("item:contains('Q & A with'):lt(1)").each(function(){
var headline = jQuery(this);
var $enclosure = headline.find('enclosure');
var image = $enclosure.attr("url");
var headlinesTitle = headline.find('title').text();
var link = headline.find('guid').text();
var description = headline.find('description').text();
var teaser = headline.find('comments').text();
var author = headline.find("author").text();
var pubDate = headline.find("pubDate").text();
var qaData = '<img src="' + image +'" height="172px" width="306px" >';
qaData += '<a href="' + link + '" > <h1> ' + headlinesTitle + '</h1></a>';
qaData += '' + teaser + ' <br clear="all" />';
qaData += '<a href="' + link + '" class="mainButton" ><span>FULL STORY ›</span></a>';
jQuery('div.DCnarModR').append(jQuery(qaData));
});
});
});
答案 0 :(得分:2)
我也见过这个。无论出于何种原因,似乎jQuery只会在Internet Explorer中的实际XML对象上执行其标准遍历函数。
我使用的解决方法是使用一些简单的特征检测,首先查看您是否在IE中,然后将XML字符串转换为XML对象以供jQuery使用。
类似的东西:
function Convert(xmlStr) {
if (window.ActiveXObject && (new window.ActiveXObject("Microsoft.XMLDOM") != null)) {
var xd = new window.ActiveXObject("Microsoft.XMLDOM");
if (xd) {
xd.loadXML(xmlStr);
return xd;
}
}
return xmlStr;
}
然后,在你的代码中(我用你的示例RSS尝试了这个,它似乎在IE8中做了这个技巧)。
jQuery.get('news.xml', function(RSSqa) { // NEWS XML
RSSqa = Convert(RSSqa);
jQuery(RSSqa).find("item:contains('Q & A with'):lt(1)").each(function() {
/* rest of your code... */
});
});
希望有所帮助!