JQuery SelectToUISlider问题

时间:2009-10-16 15:27:33

标签: jquery jquery-ui slider uislider

希望以前没有问过这个滑块问题,但在浏览问题时我找不到答案。所以,这里是:我有一个SelectToUISlider(http://www.filamentgroup.com/lab/update_jquery_ui_slider_from_a_select_element_now_with_aria_support/),它基本上是一个修改过的JQuery UI Slider,我正在使用范围值。所以,我从60开始处理一个句柄,从100开始处理另一个句柄(从0到100)。我想要做的是单击一个单选按钮,以便100更改为0,并能够更改回100.我通过JQuery选择器/ javascript更改它是不成功的。但是,当更改选择以移动手柄时,这可以工作,但如果第二个手柄(在100处)在第一个手柄后面移动到0(在60),则范围似乎不会跟随。我想我可能必须破坏滑块并使用第二个句柄(以100开始)重建它在这种情况下成为0的第一个句柄(尽管我已经尝试销毁它并且它似乎没有响应这两个。)这是我迄今为止尝试过的不起作用的地方:

  <script type="text/javascript">
    {literal}
    $(function(){
      $('select').selectToUISlider({
        labels: 10
      });
    });
    function event_occurs(does) {
      if (does == 1) {
        $('.ui-slider').slider('option', 'values', [60,100]);
      }
      else {
        $('.ui-slider').slider('option', 'values', [0,60]);
      }
    }
  </script>
  <style type="text/css">
    form {font-size: 62.5%; font-family:"Segoe UI","Helvetica Neue",Helvetica,Arial,sans-serif; }
    fieldset { border:0; margin: 1em; height: 12em;}
    label {font-weight: normal; float: left; margin-right: .5em; font-size: 1.1em;}
    select {margin-right: 1em; float: left;}
    .ui-slider {clear: both; top: 5em;}
    .ui-slider-tooltip {white-space: nowrap;}
  </style>
    {/literal}
  <form action="#">
    <fieldset>
      <select name="valueA" id="my_estimate">
      {section name="estimates" loop=101}
        <option value="{$smarty.section.estimates.index}"{if $smarty.section.estimates.index == 60} selected{/if}>{$smarty.section.estimates.index}</option>
      {/section}
      </select>
      <select name="valueB" id="payout">
      {section name="estimates" loop=101}
        <option value="{$smarty.section.estimates.index}"{if $smarty.section.estimates.index == 100} selected{/if}>{$smarty.section.estimates.index}</option>
      {/section}
      </select>
    </fieldset>
  </form>

  <input type="radio" onclick="event_occurs(1)" name="Event" checked="checked"> Event Occurs<br />
  <input type="radio" onclick="event_occurs(0)" name="Event"> Event Does Not Occur

就像现在一样,单击单选按钮时没有任何反应,但我也没有收到任何Javascript错误。在我开始工作之后,我还想找到一些方法来通过更改滑块属性来禁用其中一个句柄。即将手柄留在其中但不允许它被拖动。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

为什么不用$('ui-slider')。remove()。将其从DOM中删除,然后重新初始化它。我已经这样做了,它运行得非常快。

答案 1 :(得分:0)

更新:我将event_occurs函数更改为以下内容:

    function event_occurs(does) {
  if (does == 1) {
    $('.ui-slider-scale').hide();
    $('.ui-slider').slider('destroy');
    $('#payout option:eq(100)').attr("selected","selected");
    $('select').selectToUISlider({
      labels: 10
    });
  }
  else {
    $('.ui-slider-scale').hide();
    $('.ui-slider').slider('destroy');
    $('#payout option:eq(0)').attr("selected","selected");
    $('#payout, #my_estimate').selectToUISlider({
      labels: 10
    });
  }
}

这很有效,但速度非常慢。如果我能做到这一点而不必破坏滑块将是一个明显的加分。任何帮助仍然受到赞赏。