addClass(); jQuery函数在Firefox中不起作用

时间:2013-10-20 21:19:05

标签: javascript jquery firefox addclass

我有一个脚本,可以从名为body的目录中为文档的bg-images元素选择随机背景图像。如果所选背景图像在图像文件名中有“_dark”,我想在body元素中添加一个特殊类。

这是我正在使用的jQuery。它适用于Chrome& Safari,但在Firefox中什么都不做:

    var backgroundImage = $('body').css('background');
    var isitdark = "_dark";

    if (backgroundImage.indexOf( isitdark ) != -1 ) {
        $('body').addClass("dark");
    } else {
        $('body').removeClass("dark");
    }

为什么在Firefox中没有做任何事情?有没有更好的写作方式?

我尝试将"type=text/javascript"添加到我的所有脚本代码中,但这似乎没有帮助,我网站上的其余jQuery在所有浏览器中都能正常运行。

2 个答案:

答案 0 :(得分:5)

使用$('body').css('background');使用.css('background-image')

,您无法获得背景图片
var backgroundImage = $('body').css('background-image');

没有必要,因为字符串_dark将会或不会存在,但如果您愿意,可以删除url()url("")

var backgroundImage = /url\(\s*(['"]?)(.*?)\1\s*\)/g.exec($('body').css('background-image'))[2];

在FF中正常工作

http://jsfiddle.net/mNX3A/

答案 1 :(得分:4)

background是一个速记属性。速记属性为not guaranteed to be retrieved correctly with css

  

检索速记CSS属性(例如,marginbackgroundborder)虽然可以在某些浏览器中使用,但不能保证。

如果您特别想获得background-image,请获取background-image

var backgroundImage = $('body').css('background-image');