Я работаю над читателем каналов, чтобы разобрать Google News Feed. ( Fiddle). У меня есть проблемы с удалением названий и источников из описаний. Я понял, что реальный контент после этой строки тегов </font></b></font><br/><font size=\"-1\">
.
Неправильно использовать. .after
, как в var text =$(findImg).after('</font></b></font><br/><font size=\"-1\">').text().substr(0,200)+'...';
?
Кроме того, для элементов, которые не содержат изображений, как вы запрещаете добавление тегов? Спасибо.
$('#rssdata').ready(function () {
$.ajax({
url: 'http://query.yahooapis.com/v1/public/yql?q=Select%20*%20from%20rss%20where%20url%3D%22https%3A%2F%2Fnews.google.com%2Fnews%2Ffeeds%3Fq%3Dboring%26output%3Drss%22&format=json&diagnostics=true&callback=?',
dataType: 'json',
success: function (data) {
//console.log(data.feed.entries);
$(data.query.results.item).each(function (index, item) {
var findImg = item.description;
var img = $(findImg).find('img').eq(0).attr('src');
var text =$(findImg).after("</font></b></font><br /><font size=\"-1\">").text().substr(0,200)+'...';
var item_html = '<li><a target="_blank" href="' + item.link + '">' + item.title + '</a><p><img src="' + img +'"/><span>' + text +'</span></li>';
$('#rssdata ul.rss-items').append(item_html);
});
$('#rssdata div.loading').fadeOut();
$('#rssdata ul.rss-items').slideDown();
},
error: function () {}
});
});
См. Здесь измененный код (Fiddle)
$('#rssdata').ready(function () {
$.ajax({
url: 'http://query.yahooapis.com/v1/public/yql?q=Select%20*%20from%20rss%20where%20url%3D%22https%3A%2F%2Fnews.google.com%2Fnews%2Ffeeds%3Fq%3Dboring%26output%3Drss%22&format=json&diagnostics=true&callback=?',
dataType: 'json',
success: function (data) {
//console.log(data.feed.entries);
$(data.query.results.item).each(function (index, item) {
var findImg = item.description;
var img = $(findImg).find('img').eq(0).attr('src');
var text = $(findImg).find("div.lh").children("font:nth-of-type(2)").text().substr(0, 150) + '...';
var item_html = '<li><a target="_blank" href="' + item.link + '">' + item.title + '</a><p>';
if (img != undefined && img != null && img != "") {
item_html += '<img src="' + img + '"/>';
}
item_html += '<span>' + text + '</span></p></li>';
$('#rssdata ul.rss-items').append(item_html);
});
$('#rssdata div.loading').fadeOut();
$('#rssdata ul.rss-items').slideDown();
},
error: function () {}
});
});
Честно говоря, я думаю, что вы делаете все правильно. Я имею в виду то, как вы получаете описание. Я отредактировал вашу скрипку, чтобы не показывать тег IMG, когда нет изображения. http://jsfiddle.net/veritas87/cYFLe/32/
if(typeof img != 'undefined') {
var imgTag = "<img src='" + img + "' />";
}
var text =$(findImg).after("</font></b></font><br /><font size=\"-1\">").text().substr(0,200)+'...';
var item_html = '<li><a target="_blank" href="' + item.link + '">' + item.title + '</a><p>' + imgTag + '<span>' + text +'</span></li>';
Как вы можете видеть, он проверяет, не изменен ли IMG var. Когда IMG var не является неопределенным, он создает IMG-тег.