0

jQuery UI のサンプル コードを使用して、jQuery UI スライダーが選択ボックスにバインドされたページがあります。しかし、これらのいくつかを 1 つのページに表示したいのですが、これを行う最善の方法は何だろうかと考えていました。

コードを複製して、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 に答える