我正在寻找一种方法来选择具有指定backgroundImage的所有对象。 我已经尝试过这样的事情:
$.each($('*'), function(){
if ($(this).css('backgroundImage')){
console.info("backroundimage");
}else {
console.info("no backgroundimage");
}
});
一些更好的想法?
答案 0 :(得分:4)
$('*').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
});
但正如评论中所述,为所有元素执行此操作可能不是最佳选择!