2011-04-04 120 views
0

如何更改一個Jquery滑塊的值以鏡像另一個滑塊的值。鏈接多個Jquery滑塊

即。如果我有一個範圍的滑塊,我想獲取最終值並將其用作另一個範圍滑塊的起始值。我也希望它們在變化時一起動畫,因此它們看起來像是鏈接在一起

+0

順便說一句,如果你接受了幫助過你的人的答案(假設你收到了很好的答案),你可能會發現你會得到更快的答案。如果是最終幫助你的答案,請檢查答案下面的綠色複選標記(在分數下面)。謝謝! – JasCav 2011-04-04 22:24:39

回答

5

如果您使用的是jQuery UI slider,則可以通過依賴滑動事件使一個滑塊鏡像另一個滑塊。

由於您在問題中提出了兩個問題,我們來處理第一個問題(相互鏡像的滑塊)。

首先,創建你的兩個滑塊,就像這樣。

$("#slider1").slider({ 
    min: 0, 
    max: 100, 
    slide: function(event, ui) { 
     // TODO - Respond to slide event. 
    } 
}); 

$("#slider2").slider({ 
    min: 0, 
    max: 100, 
    slide: function(event, ui) { 
     // TODO - Respond to slide event. 
    } 
}); 

並且,當然,添加適當的HTML。

<div id="slider1" style="width:100px"></div> 
<div id="slider2" style="width:100px"></div> 

這將設置您的滑塊。現在,您必須實施幻燈片事件,以便在更新滑塊時更新OTHER滑塊。現在要做到這一點。

$("#slider1").slider({ 
    min: 0, 
    max: 100, 
    slide: function(event, ui) { 
     $('#slider2').slider("option", "value", ui.value); 
    } 
}); 

$("#slider2").slider({ 
    min: 0, 
    max: 100, 
    slide: function(event, ui) { 
     $('#slider1').slider("option", "value", ui.value); 
    } 
}); 

注意在幻燈片函數中進行的工作。

至於你的問題的第二部分(取最終值並用它作爲另一個滑塊的起始值),你需要在最小值和最大值中設置它(使第二個開始在結尾第一個滑塊的最大值)。然後,唯一需要做的其他更改是將差異值添加到幻燈片函數中的ui.value。以下是您需要的JavaScript示例。

var diff = 100; 
$("#slider1").slider({ 
    min: diff - diff, 
    max: diff, 
    slide: function(event, ui) { 
     $("#amount1").val(ui.value); 
     $("#amount2").val(ui.value + diff); 
     $('#slider2').slider("option", "value", ui.value + diff); 
    } 
}); 
$("#amount1").val($("#slider1").slider("value")); 

$("#slider2").slider({ 
    min: diff, 
    max: diff + diff, 
    slide: function(event, ui) { 
     $("#amount1").val(ui.value - diff); 
     $("#amount2").val(ui.value); 
     $('#slider1').slider("option", "value", ui.value - diff); 
    } 
}); 
$("#amount2").val($("#slider2").slider("value")); 

您可以更改差異值以更改條形之間的差異。我還包含了當前值的顯示,以便您可以看到這確實有效。你可以在this jsFiddle example看到這個例子。希望這可以幫助你。