css上的JQuery if条件不起作用

css上的JQuery if条件不起作用,jquery,css,if-statement,background-image,Jquery,Css,If Statement,Background Image,我有一个服务器每50毫秒发送一次状态更新 我想设置页面上的按钮以显示相应的状态 我有 if (data.playspeed == 100) { console.log("play"); $('#prev').css('background-image','url(../public/images/skipr.png)'); $('#next').css('background-image','url(../public/images/skipf.png)'); $

我有一个服务器每50毫秒发送一次状态更新

我想设置页面上的按钮以显示相应的状态

我有

if (data.playspeed == 100) {
    console.log("play");
    $('#prev').css('background-image','url(../public/images/skipr.png)');
    $('#next').css('background-image','url(../public/images/skipf.png)');
    $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
    $('#stop').css('background-image','url(../public/images/stopbutton.png)');
    $('#play').css('background-image','url(../public/images/playbutton-active.png)');
    $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
}
它按预期工作。问题:在ipad上,按钮会闪烁,因为图像刷新太频繁。 因此,我将代码更改为:

if (data.playspeed == 100) {
    if ($('#play').css('background-image') != 'url(../public/images/playbutton-active.png)') {
        console.log("play");
        $('#prev').css('background-image','url(../public/images/skipr.png)');
        $('#next').css('background-image','url(../public/images/skipf.png)');
        $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
        $('#stop').css('background-image','url(../public/images/stopbutton.png)');
        $('#play').css('background-image','url(../public/images/playbutton-active.png)');
        $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
    }
}
我的逻辑:如果播放按钮尚未设置为激活状态,则仅将按钮更新为播放状态

但它不起作用,我也不知道为什么。 console.log仍会每次启动(按钮仍会闪烁)


为什么?

在jquery中使用background属性或任何其他css属性是否使用add class和check,因为在html和类中创建的内联样式的属性必须是可重用的,并且我们在类中使用any where

 $('#prev').addClass('prev');
在css中

.prev{
  background-image : 'url(../public/images/skipr.png)' ;
}
如果使用hasClass()检查jquery,它将返回布尔值

if (data.playspeed == 100) {   
  if($(#prev).hasClass(prev)){

    }
   // if condition here like that
}

减少到在jquery中使用background属性或任何其他css属性是否使用add class和check,因为在html和类中创建的内联样式的属性必须是可重用的,并且我们在类中使用anywhere

 $('#prev').addClass('prev');
在css中

.prev{
  background-image : 'url(../public/images/skipr.png)' ;
}
如果使用hasClass()检查jquery,它将返回布尔值

if (data.playspeed == 100) {   
  if($(#prev).hasClass(prev)){

    }
   // if condition here like that
}

减少到在jquery中使用background属性或任何其他css属性是否使用add class和check,因为在html和类中创建的内联样式的属性必须是可重用的,并且我们在类中使用anywhere

 $('#prev').addClass('prev');
在css中

.prev{
  background-image : 'url(../public/images/skipr.png)' ;
}
如果使用hasClass()检查jquery,它将返回布尔值

if (data.playspeed == 100) {   
  if($(#prev).hasClass(prev)){

    }
   // if condition here like that
}

减少到在jquery中使用background属性或任何其他css属性是否使用add class和check,因为在html和类中创建的内联样式的属性必须是可重用的,并且我们在类中使用anywhere

 $('#prev').addClass('prev');
在css中

.prev{
  background-image : 'url(../public/images/skipr.png)' ;
}
如果使用hasClass()检查jquery,它将返回布尔值

if (data.playspeed == 100) {   
  if($(#prev).hasClass(prev)){

    }
   // if condition here like that
}

发生这种行为是因为浏览器将相对url更改为绝对url

换句话说,如果背景图像是CSS中的
。/test.png
,则
.CSS()
将返回
http://www.example.com/parents/of/current/folder/test.png

只需获取文件名并进行比较即可:

if ($('#play').css('background-image').split('/').pop() != 'playbutton-active.png)')
//The ending parenthesys is still there though...
但是有一个问题,没有浏览器是以同样的方式工作的。因此,这种情况可能不起作用,因为某些浏览器将URL括在引号之间

也就是说,做你想做的事情最好的方法就是使用一面旗帜。您可以使用类作为标志:

if (data.playspeed == 100) {
        if (!$('#play').hasClass('active')) {
            console.log("play");
            $('#prev').css('background-image','url(../public/images/skipr.png)');
            $('#next').css('background-image','url(../public/images/skipf.png)');
            $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
            $('#stop').css('background-image','url(../public/images/stopbutton.png)');
            $('#play').css('background-image','url(../public/images/playbutton-active.png)')
            .addClass('active');
            $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
        }
    }

这样,您就可以确定,无论您是哪种浏览器,它都能正常工作

发生这种行为是因为浏览器将相对url更改为绝对url

换句话说,如果背景图像是CSS中的
。/test.png
,则
.CSS()
将返回
http://www.example.com/parents/of/current/folder/test.png

只需获取文件名并进行比较即可:

if ($('#play').css('background-image').split('/').pop() != 'playbutton-active.png)')
//The ending parenthesys is still there though...
但是有一个问题,没有浏览器是以同样的方式工作的。因此,这种情况可能不起作用,因为某些浏览器将URL括在引号之间

也就是说,做你想做的事情最好的方法就是使用一面旗帜。您可以使用类作为标志:

if (data.playspeed == 100) {
        if (!$('#play').hasClass('active')) {
            console.log("play");
            $('#prev').css('background-image','url(../public/images/skipr.png)');
            $('#next').css('background-image','url(../public/images/skipf.png)');
            $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
            $('#stop').css('background-image','url(../public/images/stopbutton.png)');
            $('#play').css('background-image','url(../public/images/playbutton-active.png)')
            .addClass('active');
            $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
        }
    }

这样,您就可以确定,无论您是哪种浏览器,它都能正常工作

发生这种行为是因为浏览器将相对url更改为绝对url

换句话说,如果背景图像是CSS中的
。/test.png
,则
.CSS()
将返回
http://www.example.com/parents/of/current/folder/test.png

只需获取文件名并进行比较即可:

if ($('#play').css('background-image').split('/').pop() != 'playbutton-active.png)')
//The ending parenthesys is still there though...
但是有一个问题,没有浏览器是以同样的方式工作的。因此,这种情况可能不起作用,因为某些浏览器将URL括在引号之间

也就是说,做你想做的事情最好的方法就是使用一面旗帜。您可以使用类作为标志:

if (data.playspeed == 100) {
        if (!$('#play').hasClass('active')) {
            console.log("play");
            $('#prev').css('background-image','url(../public/images/skipr.png)');
            $('#next').css('background-image','url(../public/images/skipf.png)');
            $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
            $('#stop').css('background-image','url(../public/images/stopbutton.png)');
            $('#play').css('background-image','url(../public/images/playbutton-active.png)')
            .addClass('active');
            $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
        }
    }

这样,您就可以确定,无论您是哪种浏览器,它都能正常工作

发生这种行为是因为浏览器将相对url更改为绝对url

换句话说,如果背景图像是CSS中的
。/test.png
,则
.CSS()
将返回
http://www.example.com/parents/of/current/folder/test.png

只需获取文件名并进行比较即可:

if ($('#play').css('background-image').split('/').pop() != 'playbutton-active.png)')
//The ending parenthesys is still there though...
但是有一个问题,没有浏览器是以同样的方式工作的。因此,这种情况可能不起作用,因为某些浏览器将URL括在引号之间

也就是说,做你想做的事情最好的方法就是使用一面旗帜。您可以使用类作为标志:

if (data.playspeed == 100) {
        if (!$('#play').hasClass('active')) {
            console.log("play");
            $('#prev').css('background-image','url(../public/images/skipr.png)');
            $('#next').css('background-image','url(../public/images/skipf.png)');
            $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
            $('#stop').css('background-image','url(../public/images/stopbutton.png)');
            $('#play').css('background-image','url(../public/images/playbutton-active.png)')
            .addClass('active');
            $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
        }
    }

这样,您就可以确定,无论您是哪种浏览器,它都能正常工作

我建议不要使用样式本身进行检查,因为浏览器很容易纠正微小的错误,这意味着事情并不完全如预期的那样。以下是我的建议:

if (data.playspeed == 100) {
    if (!$('#play').hasClass("js-activated")) {
        $('#play').addClass("js-activated");

        console.log("play");
        $('#prev').css('background-image','url(../public/images/skipr.png)');
        $('#next').css('background-image','url(../public/images/skipf.png)');
        $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
        $('#stop').css('background-image','url(../public/images/stopbutton.png)');
        $('#play').css('background-image','url(../public/images/playbutton-active.png)');
        $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
    }
}
添加一个类到你的播放按钮,并检查。但是,在这样做时,最好将整个后台声明移动到一个外部CSS文件中,而不是使用javascript进行设置

我建议在CSS中添加以下行:

#prev.js-activated { background-image: url(../public/images/skipr.png); }
#next.js-activated { background-image: url(../public/images/skipf.png); }
#rwd.js-activated  { background-image: url(../public/images/rwdbutton.png); }
#stop.js-activated { background-image: url(../public/images/stopbutton.png); }
#play.js-activated { background-image: url(../public/images/playbutton-active.png); }
#ffwd.js-activated { background-image: url(../public/images/ffwdbutton.png)');
(不过,请确保路径来自CSS文件!) 并将您的JS替换为以下内容:

if (data.playspeed == 100 && !$('#play').hasClass("js-activated")) {
    $('#play, #next, #rwd, #stop, #prev, #ffwd').addClass("js-activated");
}

这使得JS和CSS更易于解析和分离。

我建议不要使用样式本身进行检查,因为浏览器容易纠正微小错误,这意味着事情并不像预期的那样。以下是我的建议:

if (data.playspeed == 100) {
    if (!$('#play').hasClass("js-activated")) {
        $('#play').addClass("js-activated");

        console.log("play");
        $('#prev').css('background-image','url(../public/images/skipr.png)');
        $('#next').css('background-image','url(../public/images/skipf.png)');
        $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
        $('#stop').css('background-image','url(../public/images/stopbutton.png)');
        $('#play').css('background-image','url(../public/images/playbutton-active.png)');
        $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
    }
}
添加一个类到你的播放按钮,并检查。但是,在这样做时,最好将整个后台声明移动到一个外部CSS文件中,而不是使用javascript进行设置

我建议在CSS中添加以下行:

#prev.js-activated { background-image: url(../public/images/skipr.png); }
#next.js-activated { background-image: url(../public/images/skipf.png); }
#rwd.js-activated  { background-image: url(../public/images/rwdbutton.png); }
#stop.js-activated { background-image: url(../public/images/stopbutton.png); }
#play.js-activated { background-image: url(../public/images/playbutton-active.png); }
#ffwd.js-activated { background-image: url(../public/images/ffwdbutton.png)');
(不过,请确保路径来自CSS文件!) 并将您的JS替换为以下内容:

if (data.playspeed == 100 && !$('#play').hasClass("js-activated")) {
    $('#play, #next, #rwd, #stop, #prev, #ffwd').addClass("js-activated");
}

这使得JS和CSS更易于解析和分离。

我建议不要使用样式本身进行检查,因为浏览器容易纠正微小错误,这意味着事情并不像预期的那样。以下是我的建议:

if (data.playspeed == 100) {
    if (!$('#play').hasClass("js-activated")) {
        $('#play').addClass("js-activated");

        console.log("play");
        $('#prev').css('background-image','url(../public/images/skipr.png)');
        $('#next').css('background-image','url(../public/images/skipf.png)');
        $('#rwd').css('background-image','url(../public/images/rwdbutton.png)');
        $('#stop').css('background-image','url(../public/images/stopbutton.png)');
        $('#play').css('background-image','url(../public/images/playbutton-active.png)');
        $('#ffwd').css('background-image','url(../public/images/ffwdbutton.png)');
    }
}
将一个类添加到播放按钮和c