如何在调用window.resize时刷新单个Javascript函数

时间:2011-02-08 14:00:43

标签: jquery refresh slider

我又被卡住了;

我在php-File的标签中有一个jQuery-Function,它获取了Gallery的Screenwidth。当页面加载并且运行良好时调用它。但是现在我希望再次调用该函数,每次调整窗口大小以使新的Screenwidth正确。一种可能是使用window.location.href在调用window.resize时重新加载整个页面,但这不是我想要的。

有没有办法只重新加载函数(或编写的整个javascript代码块)而无需重新加载链接的js文件和html-Structure?我只是想重新加载这个单一的功能:

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);
                }
            });

1 个答案:

答案 0 :(得分:0)

我承认我对你的语法有点困惑,如果我不在这里,我道歉,所以请告诉我这是不是你需要的,我会尽力修改代码来满足您的需求。您似乎将匿名函数传递给方法jqSlider,因此正在进行以下假设:

  1. 将您的匿名函数移至存储的内存位置
  2. 将函数引用传递给jqSlider方法
  3. 将函数引用绑定到窗口的resize事件
  4. 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);
    

    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);