使用if / else切换/更改Jquery中CSS的背景图像

已经好几个小时请帮忙

$("#NewsReel").click(function(){ if( $(".block_news").css("background","url('/new_skool/images/news_1.jpg')no-repeat")) { $(".block_news").css("background","url('/new_skool/images/news(2).jpg')no-repeat"); } else { if( $(".block_news").css("background","url('/new_skool/images/news(2).jpg')no-repeat")) { $(".block_news").css("background","url('/new_skool/images/news_1.jpg')no-repeat"); } } }); 

谢谢

它会更改图像一次,但不会触发第二个if语句。

获取背景值不是以这种方式执行的。 你需要使用:

 if ($('element').css('background') == 'value') { ... } 

此外,无法保证jQuery不会完全按照您设置的方式优化或设置背景。 例如,它可能返回值为:

 no-repeat url('/new_skool/images/news(2).jpg') 

最好创建两个CSS类,并使用toggleClass()来更改背景图像,例如在此演示中

HTML

 
  • news

CSS

 li { background:url('http://lorempixel.com/25/25/abstract/1/') no-repeat; } li.clicked { background:url('http://lorempixel.com/25/25/abstract/2/') no-repeat; } 

JavaScript(jQuery)

 $("#NewsReel").click(function() { $('.block_news').toggleClass('clicked'); return false; }); 

使用css类使用jQuery addClass / hasClass / hasClass addClass背景样式。

这行/测试:

 if( $(".block_news").css("background","url('/new_skool/images/news_1.jpg')no-repeat")) 

…将始终返回等效的true(它返回一个jQuery对象)。

在所有情况下,您都要设置背景。 要检索背景值,请丢失css方法中的第二个参数。