【问题标题】:jquery select element based on background image namejquery 根据背景图片名称选择元素
【发布时间】:2010-07-14 19:47:40
【问题描述】:

我正在尝试选择具有特定背景图像的 div,这就是我目前所拥有的。不工作。关于我做错了什么的任何想法?我正在尝试遵循 jQuery 文档。

var markerShadow0 = $("div[background-image='url(\"http://www.axtsweapons.com/gmarkers/markershadowA.png\")]");

【问题讨论】:

    标签: jquery find background-image


    【解决方案1】:

    background-image 不是元素的属性,而是css样式。

    您将不得不迭代所有 div 并检查 css 样式。

    $("div").each( function(){
    
       if ( $(this).css('background-image') === 'http://www.axtsweapons.com/gmarkers/markershadowA.png' ) {
    
          //do something
    
          //stop loop
          return false;
    
       }
    
    
    });
    

    【讨论】:

    • 非常感谢!顺便说一句,我知道一个等号是赋值,两个是比较,但三是什么?
    • @abemonkey - 它是一个严格的等号运算符,仅当两个操作数相等且类型相同时才返回 true。
    • 我今天发现的这个解决方案的问题是它不能很好地与除 Firefox 之外的任何浏览器(我一直在开发的浏览器)配合使用。有什么想法吗?
    • @abemonkey 也许其他浏览器没有给你完整的 url 你可能需要解析出图像名称并比较这些
    • 解析将是理想的,因为我正在制作一个谷歌地图应用程序并希望在某些时候有不同的标记颜色。因此,在 div 的背景图像名称中键入最后一个字母将是完美的。我在网上查找了 jQuery 解析,并得到了关于解析 xml 的内容。你能给我一个简单的例子吗?具体到这个案例就好了!感谢您的所有帮助!
    【解决方案2】:

    我不相信您可以将 CSS 属性视为属性,这就是您使用 div[attribute=value] 选择器所做的事情。

    您也许可以让div[style*=background-image:url(http://...)] 工作(请参阅this),但您可能会更好:

    $('div').each(function(i, e) {
      if ($(e).css('background-image') == 'http://www.axtsw...dowA.png')) {
        // element matches
      }
    });
    

    请注意,这将检查页面上的每个 div。如果您可以通过 ID 选择一些常见的父元素,您将大大减少要迭代的元素数量。

    【讨论】:

      【解决方案3】:

      您是否在 url 的右括号后缺少一个勾号?我看到了一个开始的勾号,但没有看到结束的勾号。

      【讨论】:

        【解决方案4】:

        背景图片不是分区的属性,而是样式的属性。这意味着您将不得不以这种风格抓住分区。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-24
          • 2013-10-11
          • 2012-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多