0

我有一个 jQuery UI 滑块绑定到选择框的页面,使用jQuery UI 的示例代码。但是,我想在一页上显示其中的几个,并且想知道最好的方法是什么?

我尝试只是复制代码并将 ID 更改为类并将变量名更改为不同的名称,但它似乎没有用。

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Slider - Slider bound to select</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    var select = $( "#minbeds" );
    var slider = $( "<div id='slider'></div>" ).insertAfter( select ).slider({
      min: 1,
      max: 6,
      range: "min",
      value: select[ 0 ].selectedIndex + 1,
      slide: function( event, ui ) {
        select[ 0 ].selectedIndex = ui.value - 1;
      }
    });
    $( "#minbeds" ).change(function() {
      slider.slider( "value", this.selectedIndex + 1 );
   });
  });
  </script>
</head>
<body>

<form id="reservation">
  <label for="minbeds">Minimum number of beds</label>
  <select name="minbeds" id="minbeds">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
  </select>
</form>

</body>
</html>
4

1 回答 1

2

我想你只需要使用 each(),请参阅我的jsFiddle 示例

html

<form id="reservation">
  <label for="minbeds">Minimum number of beds</label>
  <select name="minbeds" id="minbeds" class='needSlider'>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
  </select>

  <label for="minbeds2">Minimum number of beds 2</label>
  <select name="minbeds2" id="minbeds2" class='needSlider'>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
  </select>
</form>

Javascript

    $(".needSlider").each(function() {
        var select = $( this );
        var slider = $( "<div id='slider'></div>" ).insertAfter( select ).slider({
          min: 1,
          max: 6,
          range: "min",
          value: select[ 0 ].selectedIndex + 1,
          slide: function( event, ui ) {
            select[ 0 ].selectedIndex = ui.value - 1;
          }
        });
        select.change(function() {
          slider.slider( "value", this.selectedIndex + 1 );
        });
    });
于 2013-07-31T11:27:49.860 回答