如何在javascript中重新计算变量

时间:2011-12-05 22:48:42

标签: javascript jquery

function scrollContent(){
    var div = $('#scrolling-content'),
                 ul = $('ul.image'),
                 // unordered list's left margin
                 ulPadding = 0;

    //Get menu width
    var divWidth = div.width();

    //Remove scrollbars
    div.css({overflow: 'hidden'});

    //Find last image container
    var lastLi = ul.find('li:last-child');

    //When user move mouse over menu
    div.mousemove(function(e){

    //As images are loaded ul width increases,
    //so we recalculate it each time
    var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth() + ulPadding;   
    var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
      div.scrollLeft(left);
    });     
}

这是我滚动图像列表的方式。问题是#scrolling-content元素的大小是动态的。它会在窗口调整大小时更改。这里;

$(window).resize(function() {
        $("#scrolling-content").css("width",$(window).width() + "px");
        $("#scrolling-content").css("height",($(window).height()-400) + "px");
});

因此,当用户更改窗口大小时,必须重新计算左侧值。我怎么改变脚本来做那件事?使用scrollContent()函数调用window.resize函数是我猜的noob解决方案。它会给IE带来冲突。

1 个答案:

答案 0 :(得分:0)

您可以在调整大小时设置宽度,并使函数调用变量。此方法将您的函数转换为js对象,窗口更新将重置该对象内的宽度var。课程现在你调用这样的函数:scrollContent.scroll();

var scrollContent = {
        width: 0,
        scroll:function(){
            var div = $('#scrolling-content'),
                     ul = $('ul.image'),
                     // unordered list's left margin
                     ulPadding = 0;

            //Get menu width
            scrollContent.width = div.width();

            //Remove scrollbars
            div.css({overflow: 'hidden'});

            //Find last image container
            var lastLi = ul.find('li:last-child');

            //When user move mouse over menu
            div.mousemove(function(e){

            //As images are loaded ul width increases,
            //so we recalculate it each time
            var left = (e.pageX - div.offset().left) * (ulWidth-scrollContent.width) / scrollContent.width;
              div.scrollLeft(left);
            });
        }  
    };

$(window).resize(function() {
        $("#scrolling-content").css("width",$(window).width() + "px");
        $("#scrolling-content").css("height",($(window).height()-400) + "px");
        scrollContent.width = $(window).width();
});

您也可以声明一个标准的js var并使用它来保持简单。我更喜欢使用js对象来消除可能的var干扰。