2013-08-01 59 views
0

我希望在頁面刷新期間防止滑塊動畫,但在程序運行期間允許它。在jquery-ui滑塊內設置一個全局變量?

我幾乎沒有:

// Initialise var animate as false 
var animate = false; 

// Jquery UI 
function slider(min, max, step) { 
         $(target_slider).slider({ 
          min: min, 
          max: max, 
          range: "min", 
          step: step, 
// var animate set to false on load, so no animation from this guy: 
          animate: animate, 
// var animate now set to true to allow animation every time slider is changed from now on: 
          var animate = true; 
          slide: function (event, ui) { 
           console.log("slider is moving!"); 
           }; 
          }, 
         }); 
        } 

// Initialise slider 
slider(0, 200, 0.01); 

然而,轉向VAR動畫爲true第13行的代碼被認爲是和jQuery UI的語法不正確,所以我怎麼可以改變變量「動畫」?

我對JavaScript的範圍還有點不穩定。如果jQuery UI確實接受了我的變量變化,我的邏輯工作嗎?我假設它會因爲var animate首先在全局範圍內聲明,但如果我錯了,請糾正我!

回答

1

你想滑塊的初始化後改變animate值:

... 
slider(0, 200, 0.01); 
animate = true; 
... 

而且,一個變量被定義後,你不需要使用var關鍵字來訪問它。

更新查看API文檔後,可以使用setter方法在初始化後設置animate屬性。試試這個:

function slider(min, max, step) { 
    $(target_slider).slider({ 
     min: min, 
     max: max, 
     range: "min", 
     step: step, 
     animate: false, 
     slide: function (event, ui) { 
      console.log("slider is moving!"); 
     } 
    }); 
} 

// Initialise slider 
slider(0, 200, 0.01); 
$(target_slider).slider('option', 'animate', 'fast'); 
+0

你100%確定嗎?我認爲一旦調用了jquery ui滑塊,它就像一個單元格一樣,完全無視甚至是全局變量。如果我這樣做,動畫的'true'值永遠不會進入函數內部。我認爲。無論如何,我嘗試過,並沒有奏效。感謝您對變量重置的關注! – Starkers

+0

@明星你是對的。初始化後,該變量對滑塊沒有影響。檢查我的更新。 setter方法是你如何完成你的任務所需要的。 – Joe

+0

啊。好建議,但它似乎仍然不起作用。儘管setter方法是在intialiser之後發佈的,但它在初始加載時仍然具有動畫效果!一個jsfiddle會不會出現問題?非常感謝 – Starkers