2014-01-31 104 views
0

我一直在尋找並試圖找到解決方案,但不幸的是無法繞過它。我有多個jQuery UI滑塊,它們的數值都是從數組中滑出來的。最後,我試圖獲得滑塊的值並將其與其他滑塊相加。這裏僅是出於兩個滑塊的代碼:多個JQuery UI滑塊非線性值

$(function() { 
    var labelArr = new Array(0, 200, 400, 600); 
    $("#slider").slider({ 
     values: 0, 
     min: 0, 
     max: labelArr.length - 1, 
     slide: function (event, ui) { 
      mbdata = labelArr[ui.value] + $("#slider_2").slider("value") + $("#slider_3").slider("value") + $("#slider_4").slider("value") + $("#slider_5").slider("value") + $("#slider_6").slider("value"); 
      g1.refresh(mbdata); 
     } 
    }); 
}); 

$(function() { 
    var labelArr = new Array(0, 300, 900, 1200); 
    $("#slider_2").slider({ 
     value: 0, 
     min: 0, 
     max: labelArr.length - 1, 
     slide: function (event, ui) { 
      mbdata = labelArr[ui.value] + $("#slider_3").slider("value") + $("#slider").slider("value") + $("#slider_4").slider("value") + $("#slider_5").slider("value") + $("#slider_6").slider("value"); 
      g1.refresh(mbdata); 
     } 
    }); 
}); 

第一滑動工作良好,但不幸的是,當我滑動第二個中的值沒有顯示在陣列的人,而只是1,2,3

燦有人請嘗試給我一些幫助

非常感謝

回答

0

我改變了整個劇本,但希望它現在做你想要它做的事情 - 只是延長sliderRangesValues陣列(並添加一個新的div用正確的ID )添加更多的滑塊和v alues。它現在是一個更加靈活的腳本:

http://jsfiddle.net/fKUAe/1/

虛擬HTML:

<div id="slider0" class="slider"></div> 
<div id="slider1" class="slider"></div> 
<div id="slider2" class="slider"></div> 
<input type="text" id="slidervalues" value="0" /> 

的jQuery:

var sliderRangeValues = [ 
    [0, 100, 200, 300], 
    [0, 300, 600, 900], 
    [0, 1, 2, 3, 4, 5] 
]; 

function getAllSliderValues(sliderCount) { 
    var sliderValues = 0; 
    for (var i = 0; i < sliderCount; i++) { 
     var uiValue = $('#slider' + i).slider('value'); 
     sliderValues += sliderRangeValues[i][uiValue]; 
    } 
    $('#slidervalues').val(sliderValues); 
} 

function initSlider(i, sliderCount) { 
    $('#slider' + i).slider({ 
     values: 0, 
     min: 0, 
     max: sliderRangeValues[i].length - 1, 
     slide: function (event, ui) { 
      $('#slider' + i).slider('value', ui.value); 
      getAllSliderValues(sliderCount); 
     } 
    }); 
} 

$(function() { 
    var sliderCount = $('.slider').length; 
    for (var i = 0; i < sliderCount; i++) { 
     initSlider(i, sliderCount); 
    } 
}); 
+0

很多很多很多感謝:))大加讚賞。我如何調用所有滑塊並執行重置按鈕?並將所有句柄的值設置爲0 – RCB

+0

如果您閱讀滑塊API文檔,則可以自己回答以下問題:http://api.jqueryui.com/slider/,如果您遇到困難,請隨時打開新問題。重置按鈕可以通過任何元素上的點擊處理器來完成,例如:$('。slider').slider({value:0}); - 同樣如果問題得到解答並且幫助你解決問題,接受它或者至少投票支持 – ggzone

+0

謝謝並且對堆棧溢出缺乏用法感到遺憾我還是相當新的,並且從中獲得了主旨。我讀了api並實現了你陳述的陳述,但是由於上面的代碼是在循環中生成滑塊,所以如何實現你的復位語句呢? – RCB