如何查找具有特定背景图像的所有元素

时间:2011-10-24 11:27:56

标签: jquery css background-image

我正在寻找一种方法来选择具有指定backgroundImage的所有对象。 我已经尝试过这样的事情:

$.each($('*'), function(){
  if ($(this).css('backgroundImage')){
    console.info("backroundimage");
  }else {
    console.info("no backgroundimage");
  }
});

一些更好的想法?

4 个答案:

答案 0 :(得分:4)

Filters?

$('*').filter(function() {
     return $(this).css('background-image') == 'image.png';
});

答案 1 :(得分:3)

一种方式:

var elementsWithBG = $('.YourSelector').filter(function(){
    return this.style.backgroundImage != ''
});

当然并非所有元素都有背景,例如span,links等。使用*代价很高,您可以使用逗号而不是'.YourSelector'分隔所需的元素,例如:

$('div, p, etc')

答案 2 :(得分:1)

你几乎已经实现了它的关键。

扩展你已经拥有的东西:

$('*').each(function(){

    var bgImgStr = $(this).css('backgroundImage'),
        regEx = /\"|\'|\)/g,
        bgImgName = bgImgStr.split('/').pop().replace(regEx,'');

    if(bgImgName === 'whatever.jpg'){

        // do something

    }

});

在临界情况下,regEx部分除了文件名(如果存在)之外还会删除所有内容。这种添加的原因是因为 - 取决于浏览器 - 您可能会发现自己喜欢:

url('../images/myImg.jpg')

答案 3 :(得分:0)

你正走在正确的轨道上:

var url = $(this).css("background-image");
if (url == theExpectedImageUrl) {
  //found image
});

但正如评论中所述,为所有元素执行此操作可能不是最佳选择!