空背景图片:url(“”)删除

时间:2016-12-19 06:27:56

标签: jquery

我只想删除空li

background-image:url("")

我试过这个,但它也删除了li

的其他background-image
jQuery("li").each(function(){
  var x = jQuery(this).css("background-image");
  if (x.indexOf("") == 0){
    jQuery(this).remove();
  }
});

3 个答案:

答案 0 :(得分:2)

由于背景图像转换为绝对URI,因此.css("background-image")不会返回url() / url(""),因此不会匹配和删除元素。

您可以创建一个空白背景的元素,并用它进行比较。



// get absolute URI generated by background-image: url()
var image = getImg($('#emptyImageContainer').css("background-image"));

//Filter out desired elements
jQuery("li").filter(function() {
  //Get current element background-image
  var img = getImg(jQuery(this).css("background-image"));

  //if its same as absolute URI means empty
  return image == img;
}).remove();

function getImg(img) {
  return img.replace('url(', '').replace(')', '').replace(/\"/gi, "");;
}

.li1 {
  background-image: url(https://www.gravatar.com/avatar/35c2a1fabdd782080d3c130a65c5504e?s=32&d=identicon&r=PG&f=1)
}
.empty-image {
  background-image: url()
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="li1">1</li>
  <li class="empty-image">2</li>
  <li class="li1">3</li>
</ul>

<div id='emptyImageContainer' class="empty-image"></div>
&#13;
&#13;
&#13;

Fiddle

答案 1 :(得分:0)

if (x.indexOf('""') > -1){

您当前的代码正在搜索空字符串的索引,而不是两个双引号。此外,它可能不会在0号位置。

答案 2 :(得分:0)

试试这个,它会检查所有背景图像,它也适用于破碎图像和空白背景图像。

jQuery("li").each(function(){
    var item = jQuery(this);
    var x = item.css('background-image').replace(/^url\(['"](.+)['"]\)/, '$1');
      var tester=new Image();
      tester.onerror=imageNotFound;
      tester.src=x;

    function imageNotFound() {
      item.remove();
    }
});