2011-02-08 31 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

相關問題