jQuery获取每个元素的每个背景图像URL并将其包装在href

时间:2018-02-06 19:21:27

标签: javascript jquery wordpress

所以我试图得到每个div的背景图像网址,其中包含类"客户端"在里面。从那里我想把这个URL放到一个href并包裹另一个元素,这样我就可以让它弹出一个灯箱。

我已经做到这一点,但它似乎只抓住了第一个网址然后将其应用于所有元素。

// Make client rotator pop-up and get image url

jQuery(document).ready(function(){
jQuery('.client').each(function(index, el) {
   var bgurl =  $('.bg-cover').css('background-image');

    if(bgurl != 'none') {
        bgurl = bgurl.replace('url("','').replace('")','');
        jQuery('.client .flex_cell_inner').wrapInner('<a href="'+ bgurl +'" rel="lightbox"></a>');
    };
});
});

这是该网站的URL。转到底部附近主页的客户部分:http://staging.idgadvertising.com/locationconnection/

2 个答案:

答案 0 :(得分:2)

试试这个。如果您正在尝试获取每个项目的背景图像,则应使用$(this)引用循环中的当前项(在这种情况下,每个.client div,当您循环它们时)。您现在的方式是引用页面上每个.client div的集合。

$(document).ready(function(){
  $('.bg-cover').each(function(index, el) {
    var bgurl = $(this).css('background-image');

    if (bgurl != 'none') {
      bgurl = bgurl.replace('url("','').replace('")','');
      $($('.client .flex_cell_inner')[index]).wrapInner('<a href="'+ bgurl +'" rel="lightbox"></a>');
    };
  });
});

答案 1 :(得分:0)

bgurl在每次迭代中都是相同的,因为它总是相同的选择器.bg-cover如果有很多它总是需要第一次出现,你说你想要背景图像.client你可以使用$(this)来引用迭代中的当前元素

var bgurl = $(this).css('background-image');