Question

I'm new here and I require abit of help. I have a shuffle function which is called by pressing reset button cause of class="reset" on img tag and I need to know how to make it load from start. I mean when I'm loading this page like onload="" on body tag because when I'm looking first time at this page letters appear in alphabetical order and I need them to be shuffled from the beginning.

This is html code :

<div id="container" class='columns'>
  <div class="column" draggable="true"><header>A</header></div>
  <div class="column" draggable="true"><header>B</header></div>
  <div class="column" draggable="true"><header>C</header></div>
  <div class="column" draggable="true"><header>D</header></div>
  <div class="column" draggable="true"><header>E</header></div>
  <div class="column" draggable="true"><header>F</header></div>
  <div class="column" draggable="true"><header>G</header></div>
  <div class="column" draggable="true"><header>H</header></div>
  <div class="column" draggable="true"><header>I</header></div>
  <div class="column" draggable="true"><header>J</header></div>
  <div class="column" draggable="true"><header>K</header></div>
  <div class="column" draggable="true"><header>L</header></div>
  <div class="column" draggable="true"><header>M</header></div>
  <div class="column" draggable="true"><header>N</header></div>
  <div class="column" draggable="true"><header>O</header></div>
  <div class="column" draggable="true"><header>P</header></div>
  <div class="column" draggable="true"><header>Q</header></div>
  <div class="column" draggable="true"><header>R</header></div>
  <div class="column" draggable="true"><header>S</header></div>
  <div class="column" draggable="true"><header>T</header></div>
  <div class="column" draggable="true"><header>U</header></div>
  <div class="column" draggable="true"><header>V</header></div>
  <div class="column" draggable="true"><header>W</header></div>
  <div class="column" draggable="true"><header>X</header></div>
  <div class="column" draggable="true"><header>Y</header></div>
  <div class="column" draggable="true"><header>Z</header></div>
  </div>  

<div class="buttons"> 
         <a href='#' ><img class="reset" src="images/resetBtn.png" title="Resetare" ></a>
</div>

JS :

 jQuery(function($){

    $('img.reset').click(function(){
        $('#container').shuffle();
    });
});


(function($){

   $.fn.shuffle = function() {
       return this.each(function(){
           var items = $(this).children().clone(true);
          return (items.length) ? $(this).html($.shuffle(items)) : this;
       });
  };

   $.shuffle = function(arr) {
        for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
        return arr;
    };

})(jQuery);
Was it helpful?

Solution

Add a line

$(document).ready( function() { $('#container').shuffle(); } );

OTHER TIPS

write .shuffle on document ready too!

$(document.ready(function() {
    //register fn.shuffle
    $('#container').shuffle(); //shuffle on document ready
    $('img.reset').click(function(){
        $('#container').shuffle();
    });
});

Or, as @billyonecan mentioned in comments, you could trigger the click event too, so if you want to do more stuff on document ready, you can handle that.

ALTERNATIVE:

$(document.ready(function() {
    $('img.reset').trigger( "click" ); //Handling shuffle + more stuff
    $('img.reset').click(function(){
        $('#container').shuffle();
        //Do some other stuff.
    });
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top