从$(this)获取嵌套的img src

时间:2016-11-11 21:08:11

标签: javascript jquery syntax-error

对于其中一个简单的CMS,我需要将src从标记传递给父div的background-image网址。有了明确的身份,一切都按原样运作,但现在我试图让它自动化,它只是不会起作用。虽然我非常确定它应该是一些语法错误,但我对Java来说还是一个新手。在此先感谢4任何提示! :)

到目前为止,这是我的代码:



      var imageUrl = $(this).find('img').attr('src');
      console.log(imageUrl)

      $('.background-image').css('background-image', 'url(' + imageUrl + ')');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="background-image">
  <img src="myimg1.jpg" class="imgtag">
</div>

<div class="background-image">
  <img src="myimg2.jpg" class="imgtag">
</div>

<div class="background-image">
  <img src="myimg3.jpg" class="imgtag">
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

你应该工作的......除了this可能不是你认为的那样。如果从$(this)事件中调用click,则this将设置为已点击的元素,因此它必须包含图像。

如果没有从那里调用,那么this可能指的是窗口,这也不是你想要的。可能只是:

var imageUrl = $('#some-container').find('img').attr('src');

是你想要的,#some-container是你可以定位的图像的一些父元素。

如果要将其应用于父级中的多个元素,可以使用以下内容:

$('#some-parent').find('img').each(image => {
    let imageUrl = $(image).attr('src');
    // do something with imageUrl
});

它会循环遍历img内的每个#some-parent,您可以使用几行代码执行所有这些内容。

答案 1 :(得分:0)

好的,感谢第一条评论我开始理解$(this)的含义:)所以我使用.each函数工作,我的最终java片段现在看起来像这样:

$(".full-image").each(function() {
   var imageUrl = $(this).find('img').attr('src');
   console.log(imageUrl)
   $(this).css('background-image', 'url(' + imageUrl + ')');
  });