2011-11-04 104 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/我敢肯定纪尧姆不会介意。 ;) –