css上的JQuery if条件不起作用
我有一个服务器每50毫秒发送一次状态更新 我想设置页面上的按钮以显示相应的状态 我有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)'); $
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