获取window resize函数的值并将其带入另一个函数

时间:2013-02-17 19:18:03

标签: javascript jquery html

以下情况:

var height = $(window).height();
$(window).resize(function() {
var getfactor1 = 680 / 697
var posval1 = height*getfactor1
});

在另一个功能中我有以下内容:

if($firstBG.hasClass("inview")){
$firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
    }

每次用户缩放浏览器窗口时,如何将window.resize()函数中的posval1值放入firstBG.css。

谢谢!!

5 个答案:

答案 0 :(得分:1)

或者您可以尝试通过函数传递它:

var height = $(window).height();
 $(window).resize(function() {
 var getfactor1 = 680 / 697
 var posval1 = height*getfactor1

 myFunction(posval1);

});

 function myFunction(posval1){
  if($firstBG.hasClass("inview")){
   $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
  }
 }

答案 1 :(得分:1)

或者,更简单,为什么不在windows resize函数之外声明posval1?

var height = $(window).height(),
    posval1;

$(window).resize(function() {
   var getfactor1 = 680 / 697;
   posval1 = height*getfactor1;
});

if($firstBG.hasClass("inview")){
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
}

答案 2 :(得分:0)

为什么你不把$ firstBG.css()放到window.resize()中?

答案 3 :(得分:0)

每次用户调整窗口大小时都会发生resize事件。如果要更改某些内容,则必须从该事件的处理程序完成,否则值将不会更新。但一般来说,如果你的posval1变量的范围高于resize事件处理程序,你也可以从其他地方访问它,但正如我所说的,代码的其他部分将不再执行,除非在事件处理程序。

范围示例:

var posval1;

$(window).on('resize', function() {
  posval1 = height * (680 / 697);
});

// somewhere else
console.log(posval1);

posval1的值最有可能在执行到达console.log()时未定义,因为窗口尚未调整大小。您可以做的只是将CSS更新外包给另一个函数,并从事件处理程序调用它以及在开始时调用它。

var windowHeight, pos, posval1; // etc

var updateBg = function () {
  if($firstBG.hasClass("inview")){
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
  }
};

updateBg(); // once

$(window).on('resize', function () {
  // calculate posval1
  updateBg(); // every time on resize
});

答案 4 :(得分:0)

function newPos(x, windowHeight, pos, adjuster, inertia){
    return x + "% " + (-((windowHeight + pos) - adjuster) * inertia)  + "px";
}



function Move(){ 
    var pos = $window.scrollTop(); 


    if($firstBG.hasClass("inview")){
         var getfactor1 = 680/697;
        var posval1 = height*getfactor1;
        console.log(posval1);
        $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
    }



    if($secondBG.hasClass("inview")){   
        var getfactor2 = 1255/697;
        var posval2 = height*getfactor2;

.......等等