我只想删除空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();
}
});
答案 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;
答案 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();
}
});