【问题标题】:jQuery code works in Firefox but not in ChromejQuery 代码在 Firefox 中有效,但在 Chrome 中无效
【发布时间】:2012-07-08 12:18:23
【问题描述】:

我有以下在 Firefox 和 Internet Explorer 中运行良好的 jQuery 代码。它在 Chrome 中不起作用,我不知道为什么。

我正在尝试使用以下代码更改元素的 background-image

$(".category-nav").find("a").each(function(index){
    if($(this).css("background-color") === "transparent" && !$(this).parent().hasClass("level1"))
    {
        $(this).css("background-image", "url(/images/gallery/images/arrow-cat-list-grey.png)");
    }
}); 

【问题讨论】:

  • 你这里有一个错字>> ("background-color") === "transparent" ..删除一个=
  • 这不是错字。 Triple === 是很好的 JavaScript。
  • @user1042031 这不是错字,=== 表示完全匹配,包括类型 (ref)
  • 做一个测试,确定Chrome是否无法识别"transparent"或无法写入新的bg url。它必须是两者之一。
  • @Lix 指定函数的参数不会改变这一点。他没有使用参数中的索引或元素,所以不用担心。

标签: jquery google-chrome


【解决方案1】:

Chrome 将背景颜色返回为 rgba(0, 0, 0, 0) 以表示透明 (demo)

试试这个代码 (demo):

$(".category-nav").find("a").each(function(index){
    if ( /transparent|rgba\(0, 0, 0, 0\)/.test($(this).css("background-color") ) &&
          !$(this).parent().hasClass("level1") )
    {
        $(this).css("background-image", "url(/images/gallery/images/arrow-cat-list-grey.png)");
    }

});

【讨论】:

  • 实际上,前几天我自己第一次写了一个十六进制到 rgb 颜色转换器...这是 Chrome 的新变化吗?或者也许我只是不经常用 JS 操作样式。
  • 刚刚发现这个东西,正准备像你一样发布解决方案。你抓住了我:)。
  • @rlemon 我认为只有透明才能做到这一点。也许最容易记住的方法是将 Chrome 开发者工具的颜色设置为 rgb。按 F12,单击元素并选择任何元素,然后在样式手风琴中单击齿轮以更改输出 - i50.tinypic.com/beypty.jpg
  • 我不记得确切的情况(可能是透明或略微反式元素..),但在我的测试中我确实注意到了这一点。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多