jQuery: найти текст после строки определенных тегов и удалить теги img, если нет изображений

0

Я работаю над читателем каналов, чтобы разобрать 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 () {}

    });
});
  • 0
    какой желаемый формат вывода
Теги:
rss

2 ответа

1
Лучший ответ

См. Здесь измененный код (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 () {}

});

});

1

Честно говоря, я думаю, что вы делаете все правильно. Я имею в виду то, как вы получаете описание. Я отредактировал вашу скрипку, чтобы не показывать тег 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-тег.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню