2011-02-08 5 views
0

もう一度貼り付けられました。window.resizeが呼び出されたときにシングルJavascript関数をリフレッシュする方法

私は、ギャラリーのスクリーン幅を取得するphp-fileのタグにjQuery-Functionを持っています。ページが読み込まれてうまく動作するときに呼び出されます。しかし、今度は、新しいScreenwidthの権利を得るために、ウィンドウがサイズ変更されるたびに、関数を再度呼び出す必要があります。 1つの可能性は、window.resizeが呼び出されたときにwindow.location.hrefを使ってページ全体をリロードすることですが、それは私が望むものではありません。

リンクされたjsファイルとhtml-Structure ??をリロードすることなく、関数(またはJavaScriptコードブロック全体で書かれたもの)をリロードする方法はありますか?私はちょうどこの単一の機能をリロードします:

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に無名関数を渡すように見える:あなたのjqSlider方法

  • バインドする機能のリファレンスを渡し保存されたメモリ位置
  • にあなたの無名関数を移動
    1. ウィンドウのサイズ変更イベント

    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

    +0

    ああ、奇妙な構文は申し訳ありませんが、1つのドキュメントで2つの異なるjQuery-Versionsを使用しています。そのため、奇妙なコードを引き起こすvar jqSlider = $ .noConflict(true)を使用しました。とにかく、私はあなたの助言を試みたが、何か変わったことが起こる:関数が呼び出されていない、格納されたメモリ位置に移動されたとしても関数が呼び出されます。もちろんこれは問題ではありませんが、スライダを破棄して再初期化しようとすると、再初期化せずに破棄されます。私はjqSlider(window).resize(function(){jqSlider( '。slider'、container} .slider( "destroy"); mySliderFunc();})アイデアを試しましたか? – lucasdidthis

    +0

    #preloaderはまだDOM内にあり、resize関数が呼び出されたときに表示されますか? – lsuarez

    関連する問題