简体   繁体   中英

Create multiple sliders with JQuery automatically

I was trying to make N sliders with JQuery in more automatic way using iteration and I have a few questions (working example is at the end).

Why does the first JQuery code work but second JS code does not work for producing multiple sliders? Shouldn`t this iterate over arr in the same way? Is there any other possible way to use JS for looping and pass arguments to JQuery for making sliders?

JQuery:

  var arr = [ "1" , 2, 3, 4];
  jQuery.each( arr, function( i, val ) {
    $( function() {
        $( "#slider"+val ).slider();
    } );
  });

And JS code:

for(var i=0; i<4; i++){
    $( function() {
        $( "#slider"+arr[i] ).slider();
    } );
  }

Here is the code in a simple example .

 var arr = ["1", 2, 3, 4]; // jQuery.each(arr, function(i, val) { console.log("#slider" + val) $(function() { $("#slider" + val).slider(); }); }); /*for(var i=0; i<4; i++){ $( function() { $( "#slider"+arr[i] ).slider(); } ); }*/
 <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <div id="slider1"></div> <div id="slider2"></div> <div id="slider3"></div> <div id="slider4"></div>

Why do the iteration yourself? Let jQuery do the work

Also $(function() {}) is an alternative to $(document).ready(function(){}) so you complicate things far too much

 $(function() { $(".slider").slider(); })
 <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <div class="slider" id="slider1"></div> <div class="slider" id="slider2"></div> <div class="slider" id="slider3"></div> <div class="slider" id="slider4"></div>

If you WANT to loop, loop over the existing elements

 $(function() { $(".slider").each(function() { $(this).slider() }) })
 <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <div class="slider" id="slider1"></div> <div class="slider" id="slider2"></div> <div class="slider" id="slider3"></div> <div class="slider" id="slider4"></div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM