将第一个img src从解析后的feed传递到另一个elem的bg img属性

时间:2017-01-23 20:42:19

标签: javascript jquery

所以,基本上我用jQuery解析一些RSS feed。我想获取最新解析的 IMAGE 并获取最新的(或第一个实例) img src并填充我的第二个指定元素的css background-image:属性它的内容。因此,我的Feed输出中的第一个实例img src也将使用它的内容填充我的第二个元素的背景图像。我一直在使用以下逻辑。但是,我总是在控制台中获得background-image: 'undefined'

由于某种原因,它不会从下面的第一行读取或捕获第一个填充图像实例。

 var HeadImg = $('.featimg img').first().attr('src'); // not pulling
 $('.site-featured-content').css('background-image', 'url(' + HeadImg + ')');

以下我的完整JS for context

我也试过在rss feed JS之前和之后移动上面两行。

 jQuery(document).ready(function($){ 

  var url = window.location.href;

  if (url.indexOf('check') > -1) {  
      $(".feed1").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
  }
  if (url.indexOf('movies') > -1) { 
      $(".feed1").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
  }
  if (url.indexOf('host') > -1) { 
      $(".feed1").rss("http://www.dlisted.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://stupidcelebrities.net/feed/",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
  }
if (url.indexOf('TheCollegeLife') > -1) { 
      $(".feed1").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
  }
  if (url.indexOf('WingmanConnect') > -1) { 
      $(".feed1").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
  }
  if (url.indexOf('Media2point0') > -1) { 
      $(".feed1").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
  }
  if (url.indexOf('Brokepoint') > -1) { 
      $(".feed1").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed2").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
      })
      $(".feed3").rss("http://www.thehollywoodgossip.com/rss.xml",
      {
        limit: 17,
        entryTemplate:'<h1 class="feedtitle"><a href="{url}">[{author}@{date}] {title}</a></h1><br/><div class="featimg">{teaserImage}</div><div class="feedtxt">{shortBodyPlain}</div>'
       })
    }
    var HeadImg = $('.featimg img').first().attr('src');
    $('.site-featured-content').css('background-image', 'url(' + HeadImg + ')');
})

注意:// 是的,<div class="featimg">{teaserImage}</div>呈现为<div class="featimg"><img class="class" src="/img.jpg"></div>

1 个答案:

答案 0 :(得分:2)

建议:

function waitForCompleteRender()
{
    var HeadImg = $('.featimg img').first();
    if (HeadImg.length == 0) return setTimeout(waitForCompleteRender, 200);

    $('.site-featured-content').css('background-image', 'url(' + HeadImg.attr('src') + ')');

}

waitForCompleteRender();

编辑

请注意,这种方法对于生产使用来说风险很大(如果图像根本没有渲染)。你可能想要添加一个 if语句,它将在X次之后处理错误而没有成功....