【问题标题】:Selecting all the divs with png background-image使用 png background-image 选择所有 div
【发布时间】:2010-02-12 12:54:41
【问题描述】:

如何在 jQuery 中选择所有样式为 background-image: url(somepath/somename.png)divs?

【问题讨论】:

  • 在我看来,唯一的方法是使用 foreach 并检查样式值...
  • @Kirzilla:那么我建议你阅读下面的答案,每一个都是有效的方法:-)

标签: jquery html png jquery-selectors


【解决方案1】:

尝试添加自定义选择器:

$(document).ready(function() { 
    $.extend($.expr[':'], { 
        hasMyImage: function(el) { 
            return ($(el).css('background-image') == "Url('somepath/somename.png')");
        } 
    }); 
}); 

然后选择:

$("div:hasMyImage");

【讨论】:

  • background-image 上的正确跨浏览器匹配需要正则表达式。有些浏览器返回带有字符串标识符 (') 的值,有些则没有。 url() 的情况也可能不同。
  • +1 这太好了,不知道你可以定义新的选择器.. 这会派上用场
【解决方案2】:

没有 jQuery 选择器,但这可能有效:

$('div').each( function() {
    if ( $(this).css('background-image') == 'url("image.png")' ) {
        // do something here
    }
});

但是,更有效的方法是确保您只有一个使用该背景图像的类,然后只需选择 $('.bgClass')

【讨论】:

  • 问题是我无法访问生成元素的代码。这是一个天气 Web 部件,背景图像地址一直在变化。 div 没有类。这些点让我想到了这个问题。
【解决方案3】:

使用filter函数:

var matches = $("div").filter(function() 
{      
    return ($(this).css("background-image") == "url('somepath/somename.png')");
});

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2018-02-03
    • 2011-10-17
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多