【问题标题】:How to jQuery selectors, get an image's src and set it as a background-image of another element?如何使用 jQuery 选择器,获取图像的 src 并将其设置为另一个元素的背景图像?
【发布时间】:2015-05-27 11:49:53
【问题描述】:

我正在尝试在以下情况下进行这项工作:

我的目标是从下面的 html 结构中获取第一张图片的 src,然后将其 src 值设置为 DOM 中存在的另一个元素的background-image:

动态加载的 HTML 输出。

我设置了 Instafeed jQuery 插件,它输出以下 html 结构:图像通过 Instagram API 动态加载。

我想从下面的第一张图片中抓取图片src...

<div id="instafeed">
<div class="col-xs-4">
 <a href="#" target="_blank" class="thumbnail fa-eye fa">
  <img class="dynamic-image" src="https://scontent.cdninstagram.com/hphotos-xpa1/t51.2885-15/e15/10375586_312675495555582_308260980_n.jpg">
 </a>
</div>

<div class="col-xs-4">
 <a href="#" target="_blank" class="thumbnail fa-eye fa">
  <img class="dynamic-image" src="https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/10454019_1429094704028916_1903084125_n.jpg">
 </a>
</div>

<div class="col-xs-4">
 <a href="#" target="_blank" class="thumbnail fa-eye fa">
  <img class="dynamic-image" src="https://scontent.cdninstagram.com/hphotos-xpf1/t51.2885-15/e15/1530818_682625665122870_298851871_n.jpg">
 </a>
</div>
</div>

...并将其作为以下目标元素的url.bgcover

<div class="masthead bgcover" style="background-image: url('https://distilleryimage11-a.akamaihd.net/fdc05880f98511e2af2c22000a9e510c_7.jpg');"></div>

jQuery

​​>

下面的代码可以工作,但是,它会获取 html 中的其中一个图像的 img src,而不是第一个...

$( window ).load(function() {
// For each image with the class .dynamic-image on the page
$(".dynamic-image").each(function() {
// Grab the image
var image_source = $(this).attr('src');

// Set the background
$(".bgcover").css("background-image",'url('+image_source+')');

 });
});

通过阅读jQuery's :eq() Selector 文档,我现在正在尝试学习如何使用选择器,但我对 JS/jQuery 还很陌生,所以我非常感谢任何有关使其以正确方式工作的提示.

【问题讨论】:

  • 试试这个 --- $(".dynamic-image:eq(0)") 选择第一个 img
  • 我已经试过了,但是,我把它放在jQuery.each()下面,我再试一次。谢谢。
  • 或者更好地尝试 $("img:eq(0)") 它会选择第一个图像标签,但仅当您在同一文档文件中之前没有任何图像标签时才使用
  • 嘿@divy3993 - 它开箱即用!感谢您的意见!
  • 很高兴它对你有用!

标签: javascript jquery html css src


【解决方案1】:

jquery 中的.each() 函数就像一个循环。它将在每场比赛中循环运行。因此,在您上面的代码中,理想情况下它会选择最后一个 img 标签并将其图像设置为背景。

相反,如果您使用.first() 函数,它将返回匹配的第一个元素。这是适合您的实现。

$(window).load(function () {
    // For each image with the class .dynamic-image on the page

    // Grab the image
    var image_source = $(".dynamic-image").first().attr('src');
    image_source = "url('" + image_source + "')";
    // Set the background
    $(".bgcover").css("background-image", image_source);

});

希望这会有所帮助。

【讨论】:

  • 嘿@Bala,感谢 .first() 的好方法,我会试一试。
  • 感谢@Bala,您的实现开箱即用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 2018-04-23
  • 1970-01-01
  • 2017-08-27
  • 2013-10-19
  • 2021-09-02
相关资源
最近更新 更多