不,没有。即使有多个背景图像,您仍然只有一个属性背景图像。您需要自行整理字符串值并将其传回。像下面这样的东西将会成功。
jsFiddle
<div id="showcase"></div>
<button class="changeBG firstBG">change first bg image</button>
<button class="changeBG secondBG">change second bg image</button>
<button class="changeBG thirdBG">change third bg image</button>
var backgrounds = [
["url11", "url12", "url13"],
["url21", "url22", "url23"],
["url31", "url32", "url33"],
];
$('#showcase').data('currentBGs', [0,0,0]);
$('.changeBG').on('click',function(){
var $button = $(this),
whichButton,
whichBGnum,
bgLength,
currentBGs,
bgString,
bg0,
bg1,
bg2;
if($button.hasClass('firstBG')){
whichButton = 0;
}else if($button.hasClass('secondBG')){
whichButton = 1;
}else if($button.hasClass('thirdBG')){
whichButton = 2;
}
currentBGs = $('#showcase').data('currentBGs');
currentBGnum = currentBGs[whichButton];
bgLength = backgrounds[whichButton].length;
currentBGnum = (currentBGnum + 1) % bgLength;
currentBGs[whichButton] = currentBGnum;
bg0 = backgrounds[0][ currentBGs[0] ];
bg1 = backgrounds[1][ currentBGs[1] ];
bg2 = backgrounds[2][ currentBGs[2] ];
bgString = 'url(' + bg0 + '), url(' + bg1 + '), url(' + bg2 + ')';
$('#showcase').data('currentBGs', currentBGs)
.css('background-image', bgString);
});
此代码并不意味着被优化,但可读。示例图片很傻,它们就是我打开的任何浏览器窗口。
- 保留所有图片的JS数组。这是一个多维数组,第一级代表背景的每个部分,第二级是该背景的每个选项。
- 记下当前背景的状态,这里我们只是
.data()
。
- 图被点击
- 出哪个按钮获取显示
- 周期相应的计数器上的当前状态
- 获取新的背景
- 更新与所述数据和新的背景图像的显示时刻的状态。
您确定要使用“否”回答吗? ;) – Sinetheta 2012-02-04 23:23:11