Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JQuery best practice, using $(document).ready inside an IIFE?

I am looking at a piece of code:

(function($) {        // other code here      $(document).ready(function() {        // other code here       });     })(jQuery); 

I though the IIFE does the functions of $(document).ready, is this code correct? or can I just remove the $(document).ready and place the code directly inside the IIFE.

like image 703
webmedia Avatar asked Jul 24 '14 10:07

webmedia


People also ask

Can you have multiple $( document .ready function ()?

ready' function in a page? Can we add more than one 'document. ready' function in a page? Yes we can do it as like I did in below example both the $(document).

What is $( document .ready () and $( window .load () in jQuery?

ready() and $(window). load() event is that the code included inside onload function will run once the entire page(images, iframes, stylesheets,etc) are loaded whereas the $(document). ready() event fires before all images,iframes etc. are loaded, but after the whole DOM itself is ready.

What is replacement of $( document .ready function?

load(function(){ // ...}) @undefined, this is almost the same as $(document). ready(function(){ ... }) . load() will wait until the graphics are also loaded.

What is difference between $( document .ready function () vs $( function ()?

So technically they are both the same. Not major difference between these two declaration. They used based on weather you use JavaScript then you should use $(document). ready declaration in other case you use jQuery library which is a part of JavaScript then you should use $(function) declaration.


1 Answers

No, IIFE doesn't execute the code in document ready.

1. Just in IIFE:

(function($) {   console.log('logs immediately'); })(jQuery); 

This code runs immediately logs "logs immediately" without document is ready.

2. Within ready:

(function($) {    $(document).ready(function(){      console.log('logs after ready');    }); })(jQuery); 

Runs the code immediately and waits for document ready and logs "logs after ready".

This explains better to understand:

(function($) {   console.log('logs immediately');   $(document).ready(function(){     console.log('logs after ready');   }); })(jQuery); 

This logs "logs immediately" to the console immediately after the window load but the "logs after ready" is logged only after the document is ready.


IIFE is not alternative for ready:

The alternative for $(document).ready(function(){}) is:

$(function(){    //code in here }); 

Update

From jQuery version 3.0, the ready handler is changed.

Only the following form of ready handler is recommended.

jQuery(function($) {  }); 

Ready handler is now asynchronous.

$(function() {   console.log("inside handler"); }); console.log("outside handler"); 

> outside handler

> inside handler

like image 55
Bhojendra Rauniyar Avatar answered Sep 22 '22 02:09

Bhojendra Rauniyar