首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery进行后台定位在IE7中不起作用

使用jquery进行后台定位在IE7中不起作用
EN

Stack Overflow用户
提问于 2010-02-01 20:12:03
回答 1查看 1.2K关注 0票数 0

我的脚本应该在单击按钮时动态更改背景位置(从当前值中增加或减少百分之一)。虽然在ie7上不行,但在Fx和Chrome上运行得很好,ie8也可以(我相信)。

下面是我的代码:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-01 20:17:33

对于Internet Explorer,您需要使用background-position-xbackground-position-y属性。

这里有一个关于你如何支持IE的例子。我还对您的代码进行了一些重构,以减少冗余:

代码语言:javascript
复制
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 + '%');
    });
}

我还没有测试过,但它应该可以工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2176480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档