2011-11-04 103 views
0

我有以下代碼,我有jQuery UI滑塊的問題。我的問題是什麼:jQuery UI滑塊使用範圍,奇怪的行爲

雖然滑塊呈現正確,但它表現得很奇怪。我是什麼意思?而不是呈現給處理程序,它只呈現一個,滑塊只能滑動,直到值爲70的巫婆是我數組中的第二個值。請問如何解決這個問題?

這裏是我的代碼:

HTML:

<td valign="top"> 
    <input 
     class="slider_hidden" 
     type="hidden" 
     name="field_name" 
     value="10,70" 
     id="slider_hidden" 
     data-disabled="0" 
     data-min="0" 
     data-max="100" 
     data-orientation="horizontal" 
     data-step="1" 
     data-range="1" 
    /> 
    <div class="slider"></div> 
    <br /> 
    <span class="description"><?php echo $description; ?></span> 
</td> 

的JavaScript

$(document).ready(
    function() 
    { 
     $(".slider").each(
      function() 
      { 
       var val = $(this).prev('input.slider_hidden').val(); 
       var min = $(this).prev('input.slider_hidden').data('min'); 
       var max = $(this).prev('input.slider_hidden').data('max'); 
       var step = $(this).prev('input.slider_hidden').data('step'); 
       var slide_disabled = ($(this).prev('input.slider_hidden').data('disabled') == "1" ? true : false); 
       var orientation = $(this).prev('input.slider_hidden').data('orientation'); 
       var range = ($(this).prev('input.slider_hidden').data('range') == "1" ? true : false); 

       $(this).slider(
        { 
         min: min, 
        max: max, 
         step: step, 
         disabled: slide_disabled, 
         orientation: orientation, 
         slide: function(e, ui) 
         { 
          console.log(ui); 
          $(this).prev('input.slider_hidden').val(ui.value); 
         } 
        } 
       ); 

       $(this).slider('option', 'range', range); 

       if(range == true) 
       { 
        var s = val.split(','); 
        $(this).slider("option", "values", s); 
       } 
       else 
       { 
        $(this).slider("option", "value", val); 
       } 
      } 
     ); 
    } 
); 

注意,所有值從隱藏字段正確retrived。

+0

你至少應該保存'$(本)'(和'.prev ()'以及在你這樣做的時候)在一個變量里加速你的代碼。 –

+0

它似乎使用範圍:「分鐘」。任何想法,或者我可能有什麼錯? :? –

回答

2

經過漫長的調查,似乎你可以設置valuesvalue一旦它被初始化!

所以,我沒有發現任何其他的解決方案不是這樣:http://jsfiddle.net/7YVVY/1/

它的工作原理,但它不是優雅:)

+0

只爲您的嘗試一次提高:)我會閱讀代碼,如果正確,我會標記爲答案:)非常感謝Guillaume思科! :) –

+0

你只是最好的!!!!!!非常感謝:) –

+0

@MerianosNikos:我更新了代碼,使其更簡單(更快):http://jsfiddle.net/7YVVY/3/我敢肯定紀堯姆不會介意。 ;) –