javascript - How to handle slider change event for multiple sliders in a page: JqueryMobile -


in app have multiple pages in single html template, each of pages have 5 sliders, when move slider ,based on value(1 5) display text. below sample of 2 pages

<!-- start of 2 page-->  <div data-role="page" id="page2" >      <!-- start of content -->     <div data-role="content" id="target-content">     <label for="slider">1. .............</label>     <input type="range" name="slider" id="slider" value="0" min="0" max="5"  />      <label id="sliderlabel"></label>       <label for="slider1">2............................ </label>     <input type="range" name="slider" id="slider" value="0" min="0" max="5"  />      <label id="sliderlabel"></label>       <label for="slider2">3. ................</label>     <input type="range" name="slider" id="slider" value="0" min="0" max="5"  />      <label id="sliderlabel"></label>      </div>     <!-- end of content -->  </div> <!-- end of 2 page-->  <!-- start of 3 page-->  <div data-role="page" id="page3" >      <!-- start of content -->     <div data-role="content" id="target-content"" >     <label for="slider">1. .............</label>     <input type="range" name="slider" id="slider" value="0" min="0" max="5"  />      <label id="sliderlabel"></label>       <label for="slider1">2............................ </label>     <input type="range" name="slider" id="slider" value="0" min="0" max="5"  />      <label id="sliderlabel"></label>       <label for="slider2">3. ................</label>     <input type="range" name="slider" id="slider" value="0" min="0" max="5"  />      <label id="sliderlabel"></label>      </div>     <!-- end of content -->  </div> <!-- end of 3 page-->  

i doing first slider based on id below:

<script type="text/javascript">  $(document).on('pagecreate', function() {      $("#slider").change(function () {         sval = $(this).val();          if (sval == 0) {             $('#sliderlabel').text('');         }          if (sval == 1) {             $('#sliderlabel').text('strongly disagree');         }            if (sval == 2) {             $('#sliderlabel').text('disagree');         }            if (sval == 3) {             $('#sliderlabel').text('neither agree nor disagree');         }            if (sval == 4) {             $('#sliderlabel').text('agree');         }            if (sval == 5) {             $('#sliderlabel').text('strongly agree');         }         }); }); </script> 

now how implement changing text each sliders of page , sliders of other pages in 1 single index.html page.

as @raymond camden mentioned in answer, use .class instead of id, id should unique.

since you're using multi-page model, need add change listener upon pagecreate event. however, have specify page in order not add multiple listener on same page (usually first page in dom). on pagecreate add change listeners .slider within $(event.target) page, way.

$(document).on("pagecreate", function (event) {    $(event.target).find(".slider").on("change", function () {       sval = $(this).val();         if (sval == 1) {           $(this).closest("div").next('.sliderlabel').text('new text');         }    }); }); 

$(event.target) page has been created, using .find(), attach change listener .slider.

to change label's text, need replace id .class. moreover, need use .closest() , .next() since sliders wrapped in <div class="ui-slider"> , label sibling of div.

demo


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -