2011-02-08 30 views
0

我再一次陷入困境;如何在调用window.resize时刷新单个Javascript函数

我在一个php文件的标签中有一个jQuery函数,它可以获得一个Gallery的Screenwidth。它在页面加载并且工作得很好时调用。但是现在我想要再次调用该函数,每次调整窗口大小以获得新的屏幕宽度。一种可能性是在调用window.resize时使用window.location.href来重新加载整个页面,但这不是我想要的。

有没有办法只重新加载函数(或整个JavaScript代码块中写入),而无需重新加载链接的js文件和html结构?我只是想重装这个单一的功能:

jqSlider(function(){ 

       var container = jqSlider('div.sliderGallery'); 
       var ul = jqSlider('ul', container); 
       var fensterBreite = jqSlider("#preloader").outerWidth(); 
       var itemsWidth = 2559 - fensterBreite; 

      jqSlider('.slider', container).slider({ 
       min: 0, 
       max: itemsWidth, 
       handle: '.handle', 
       stop: function (event, ui) { 
        ul.animate({'left' : ui.value * -1}, 500, 'linear'); 
       }, 
       slide: function (event, ui) { 
        ul.css('left', ui.value * -1); 
       } 
      }); 

回答

0

我承认我有点被你的语法混乱和我道歉,如果我没有发现在这里,所以让我知道如果这是你需要的不是我会尽我所能修改代码以满足您的需求。你似乎是通过一个匿名函数的方法jqSlider,这个假设这样的工作:

  1. 将您的匿名函数来存储内存位置
  2. 传递函数引用您jqSlider方法
  3. 绑定函数参照窗口的大小调整事件

var mySliderFunc = function() { 

    var container = jqSlider('div.sliderGallery'); 
    var ul = jqSlider('ul', container); 
    var fensterBreite = jqSlider("#preloader").outerWidth(); 
    var itemsWidth = 2559 - fensterBreite; 

    jqSlider('.slider', container).slider({ 
     min: 0, 
     max: itemsWidth, 
     handle: '.handle', 
     stop: function (event, ui) { 
      ul.animate({ 'left': ui.value * -1 }, 500, 'linear'); 
     }, 
     slide: function (event, ui) { 
      ul.css('left', ui.value * -1); 
     } 
    }); 
}; 

jqSlider(mySliderFunc); 

$(window).resize(mySliderFunc); 

+0

如果()方法采用“消灭”为参数的.slider调用析构函数CAL l,在重新初始化之前,您可能需要添加一行以销毁滑块。否则,在尝试重新初始化已包含滑块的DOM元素上的方法时,您可能会遇到奇怪的行为。 – lsuarez 2011-02-08 16:04:54

相关问题