使用以选择器结尾的属性添加一个 class

Using attribute ends with selector to add a class

我正在尝试根据页面的 background-image 更改字体颜色。

我查看了所有我能找到的关于此的帖子,但我无法找出适合我的特定应用程序的正确语法。

我正在尝试编写一个函数,表示 "If the background-image of body ends with "-dark.png" 将 class .dark 添加到 nav

这是我拥有的:

function colorChange(){
    var b = $('body').css('background-image');

    if (b $==='-dark.png'){
        $("nav").addClass("dark");
    }
}

感谢任何帮助!

$== 运算符在 JS 中无效。要查明字符串是否以一组特定字符结尾,您可以使用正则表达式:

function colorChange(){
    var b = $('body').css('background-image');
    if (b.test(/-dark.png$/i)) {
        $("nav").addClass("dark");
    }
}

或者 substr():

function colorChange(){
    var b = $('body').css('background-image');
    var match = '-dark.png';
    if (b.length > match.length && b.substr(-match.length) == match) {
        $("nav").addClass("dark");
    }
}

您需要使用正则表达式:

function colorChange(){
    var b = $('body').css('background-image');
    if(b.match(/-dark.png"\)$/)){
        $("nav").addClass("dark");
    }
}

我在 $ 之前添加了 "\) 因为这就是这个字符串 (url) 的结尾。

我认为您不能使用结尾,因为图像 url 将被包裹在 url() 中,因此您可以检查 indexOf()

function colorChange() {
    var b = $('body').css('background-image');

    if (b.indexOf('-dark.png') > -1) {
        $("nav").addClass("dark");
    }
}

你好马克普法夫, 根据我对你的问题的理解,这是你的答案,它可能会解决你的问题

      function colorChange(){
            var b = $('body').css('background-image');
            b = b.replace('url("','').replace('")','');
            b = b.substr(b.lastIndexOf('/') + 1);
            if (b === 'dark.png'){
                $('nav').addClass("dark");
            }
        }

希望对你有所帮助..