我的脚本应该在单击按钮时动态更改背景位置(从当前值添加或减去1%)。在Fx和Chrome中工作得很好,ie8也是如此(我相信),但不是在ie7。
这是我的代码:
function makeClicker(index) {
$('#leftbutton' + index).click(function() {
var bPos = $('#div' + index).css('background-position');
bPos = bPos.replace(/%/g, '').split(' ');
var bPosResult = (1 + parseInt(bPos[0], 0));
bPos = bPosResult + '% ' + bPos[1] + '%';
$('#div' + index).css('background-position', bPos);
$('#vposition' + index).attr("value", bPosResult + '%');
});
$('#rightbutton' + index).click(function() {
var bPos = $('#div' + index).css('background-position');
bPos = bPos.replace(/%/g, '').split(' ');
var bPosResult = (-1 + parseInt(bPos[0], 0));
bPos = bPosResult + '% ' + bPos[1] + '%';
$('#div' + index).css('background-position', bPos);
$('#vposition' + index).attr("value", bPosResult + '%');
});
$('#upbutton' + index).click(function() {
var bPos = $('#div' + index).css('background-position');
bPos = bPos.replace(/%/g, '').split(' ');
var bPosResult = (1 + parseInt(bPos[1], 0));
bPos = bPos[0] + '% ' + bPosResult + '%';
$('#div' + index).css('background-position', bPos);
$('#hposition' + index).attr("value", bPosResult + '%');
});
$('#downbutton' + index).click(function() {
var bPos = $('#div' + index).css('background-position');
bPos = bPos.replace(/%/g, '').split(' ');
var bPosResult = (-1 + parseInt(bPos[1], 0));
bPos = bPos[0] + '% ' + bPosResult + '%';
$('#div' + index).css('background-position', bPos);
$('#hposition' + index).attr("value", bPosResult + '%');
});
}
for(var i = 1; i <= 5; i++)
makeClicker(i);
感谢您对可能导致此问题的任何建议。 -Simon
答案 0 :(得分:2)
对于Internet Explorer,您需要使用background-position-x
和background-position-y
属性。
这是一个关于如何支持IE的示例。我还重构了一些代码以减少冗余:
function makeClicker(index) {
var el = ['#leftbutton'+index, '#rightbutton'+index, '#upbutton'+index, '#downbutton'+index];
$(el).click(function() {
var bPosResult;
var bPos = $('#div' + index).css('background-position').replace(/%/g, '').split(' ');
switch($(this).attr('id')) {
case 'leftbutton':
bPosResult = (1 + parseInt(bPos[0], 0));
bPos = bPosResult + '% ' + bPos[1] + '%';
break;
case 'rightbutton':
bPosResult = (-1 + parseInt(bPos[0], 0));
bPos = bPosResult + '% ' + bPos[1] + '%';
break;
case 'upbutton':
bPosResult = (1 + parseInt(bPos[1], 0));
bPos = bPos[0] + '% ' + bPosResult + '%';
break;
case 'downbutton':
bPosResult = (-1 + parseInt(bPos[1], 0));
bPos = bPos[0] + '% ' + bPosResult + '%';
break;
}
// Detect IE
if(!$.support.cssFloat) {
$('#div' + index).css({
backgroundPositionX: bPos.split[' '][0],
backgroundPositionX: bPos.split[' '][1]
});
} else {
$('#div' + index).css('background-position', bPos);
}
$('#vposition' + index).attr("value", bPosResult + '%');
});
}
我没有测试过,但它应该有用。