JQUERY - EVENTS HANDLINGWe have the ability to create dynamic web pages by using events. Events are actions that can be detected by your Web Application. Following are the examples events:
Binding Event Handlers Using the jQuery Event Model, we can establish event handlers on DOM elements with the bind() method as follows:
<html>
<head> <title>The jQuery Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $('div').bind('click', function( event ){ alert('Hi there!'); }); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:60px;} </style> </head> <body> <p>Click on any square below to see the result:</p> <div class="div" style="background-color:blue;">ONE</div> <div class="div" style="background-color:green;">TWO</div> <div class="div" style="background-color:red;">THREE</div> </body> </html> This code will cause the division element to respond to the click event; when a user clicks inside this division thereafter, the alert will be shown. This will produce the following result: Click on any square below to see the result: ONE
TWO
THREE
The full syntax of the bind() command is as follows:
selector.bind( eventType[, eventData], handler)
Following is the description of the parameters:
Typically, once an event handler is established, it remains in effect for the remainder of the life of the page. There may be a need when you would like to remove event handler. jQuery provides the unbind() command to remove an exiting event handler. The syntax of unbind() is as follows:
selector.unbind(eventType, handler)
or selector.unbind(eventType) Following is the description of the parameters:
The following are cross platform and recommended event types which you can bind using JQuery:
The callback function takes a single parameter; when the handler is called the JavaScript event object will be passed through it. The event object is often unnecessary and the parameter is omitted, as sufficient context is usually available when the handler is bound to know exactly what needs to be done when the handler is triggered, however there are certain attributes which you would need to be accessed. The Event Attributes The following event properties/attributes are available and safe to access in a platform independent manner:
<html>
<head> <title>The jQuery Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $('div').bind('click', function( event ){ alert('Event type is ' + event.type); alert('pageX : ' + event.pageX); alert('pageY : ' + event.pageY); alert('Target : ' + event.target.innerHTML); }); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:60px;} </style> </head> <body> <p>Click on any square below to see the result:</p> <div class="div" style="background-color:blue;">ONE</div> <div class="div" style="background-color:green;">TWO</div> <div class="div" style="background-color:red;">THREE</div> </body> </html> This will produce the following result: Click on any square below to see the result: ONE
TWO
THREE
The Event Methods There is a list of methods which can be called on an Event Object:
The preventDefault() method prevents the browser from executing the default action. You can use the method isDefaultPrevented to know whether this method was ever called (on that event object). Syntax Here is the simple syntax to use this method:
event.preventDefault()
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method. This example demonstrate how you can stop the browser from changing the page to the href of any anchors.
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("a").click(function(event){ event.preventDefault(); alert( "Default behavior is disabled!" ); }); }); </script> </head> <body> <span>Click the following link and it won't work:</span> <a href="http://www.google.com">GOOGLE Inc.</a> </body> </html> This will produce the following result:
Click the following link and it won't work: GOOGLE Inc.
isDefaultPrevented() Method The isDefaultPrevented() method checks whether event.preventDefault() was ever called on this event object. This method returns true in case preventDefault() has been called otherwise it returns false. Syntax Here is the simple syntax to use this method:
event.isDefaultPrevented()
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method. This example demonstrate how you can stop the browser from changing the page to the href of any anchors.
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("a").click(function(event){ if ( event.isDefaultPrevented() ){ alert( "Default behavior is disabled - 1" ); }else{ alert( "Default behavior is enabled - 1" ); } event.preventDefault(); if ( event.isDefaultPrevented() ){ alert( "Default behavior is disabled - 2" ); }else{ alert( "Default behavior is enabled - 2" ); } }); }); </script> </head> <body> <span>Click the following link and it won't work:</span> <a href="http://www.google.com">GOOGLE Inc.</a> </body> </html> This will produce the following result:
Click the following link and it won't work: GOOGLE Inc.
stopPropagation() Method The stopPropagation() method stops the bubbling of an event to parent elements, preventing any parent handlers from being notified of the event. You can use the method event.isPropagationStopped() to know whether this method was ever called (on that event object). Syntax Here is the simple syntax to use this method:
event.stopPropagation()
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method. This example demonstrate how you can prevent other event handlers from being called:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("div").click(function(event){ alert("This is : " + $(this).text()); // Comment the following to see the difference event.stopPropagation(); }); }); </script> <style> div{ margin:10px;padding:12px; border:2px solid #666; width:160px; } </style> </head> <body> <p>Click on any box to see the effect:</p> <div id="div1" style="background-color:blue;"> OUTER BOX <div id="div2" style="background-color:red;"> INNER BOX </div> </div> </body> </html> This will produce the following result: Click on any box to see the effect:
OUTER BOX
INNER BOX
isPropagationStopped() Method The isPropagationStopped() method checks whether event.stopPropagation() was ever called on this event object. This method returns true in case event.stopPropagation() method has been already called, otherwise it returns false. Syntax Here is the simple syntax to use this method:
event.isPropagationStopped()
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("div").click(function(event){ alert("This is : " + $(this).text()); if ( event.isPropagationStopped() ){ alert( "Event bubbling is disabled - 1" ); }else{ alert( "Event bubbling is enabled - 1" ); } event.stopPropagation(); if ( event.isPropagationStopped() ){ alert( "Event bubbling is disabled - 2" ); }else{ alert( "Event bubbling is enabled - 2" ); } }); }); </script> <style> div{ margin:10px;padding:12px; border:2px solid #666; width:160px; } </style> </head> <body> <p>Click on any box to see the effect:</p> <div id="div1" style="background-color:blue;"> OUTER BOX <div id="div2" style="background-color:red;"> INNER BOX </div> </div> </body> </html> This will produce the following result: Click on any box to see the effect:
OUTER BOX
INNER BOX
stopImmediatePropagation() Method The stopImmediatePropagation() method stops the rest of the handlers from being executed. This method also stops the bubbling by calling event.stopPropagation(). You can use event.isImmediatePropagationStopped() to know whether this method was ever called (on that event object). Syntax Here is the simple syntax to use this method:
event.stopImmediatePropagation()
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("div").click(function(event){ alert("1 - This is : " + $(this).text()); // Comment the following to see the effect. event.stopImmediatePropagation(); }); // This won't be executed. $("div").click(function(event){ alert("2 - This is : " + $(this).text()); }); }); </script> <style> div{ margin:10px;padding:12px; border:2px solid #666; width:160px; } </style> </head> <body> <p>Click on any box to see the result:</p> <div id="div1" style="background-color:blue;"> BOX 1 </div> <div id="div2" style="background-color:red;"> BOX 2 </div> </body> </html> This will produce the following result: Click on any box to see the result:
BOX 1
BOX 2
isImmediatePropagationStopped() Method The isImmediatePropagationStopped() method checks whether event.stopImmediatePropagation() was ever called on this event object. This method returns true in case event.stopImmediatePropagation() method has already been called, otherwise it returns false: Syntax Here is the simple syntax to use this method:
event.isImmediatePropagationStopped()
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("div").click(function(event){ if ( event.isImmediatePropagationStopped() ){ alert( "Event bubbling is disabled - 1" ); }else{ alert( "Event bubbling is enabled - 1" ); } event.stopImmediatePropagation(); if ( event.isImmediatePropagationStopped() ){ alert( "Event bubbling is disabled - 2" ); }else{ alert( "Event bubbling is enabled - 2" ); } }); }); </script> <style> div{ margin:10px;padding:12px; border:2px solid #666; width:160px; } </style> </head> <body> <p>Click on any box to see the result:</p> <div id="div1" style="background-color:blue;"> BOX 1 </div> <div id="div2" style="background-color:red;"> BOX 2 </div> </body> </html> This will produce the following result: Click on any box to see the result:
BOX 1
BOX 2
Event Manipulation Methods Following table lists down important event-related methods:
The bind( type, [data], fn ) method binds a handler to one or more events (like click) for each matched element. Can also bind custom events. Possible event values: blur, focus, load, resize, scroll, unload, click etc. Syntax Here is the simple syntax to use this method:
selector.bind( type, [data], fn )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method. Here it binds click event with each <div> element:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $('div').bind('click', function( event ){ alert('Hi there!'); }); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:60px; } </style> </head> <body> <p>Click on any square below to see the result:</p> <div class="div" style="background-color:blue;"></div> <div class="div" style="background-color:green;"></div> <div class="div" style="background-color:red;"></div> </body> </html> This will produce the following result: Click on any square below to see the result: The off( events [, selector ] [, handler(eventObject) ] ) method does the opposite of on() method, it removes a bound live event. Syntax Here is the simple syntax to use this method −
selector.on( event, selector, handler )
Parameter Here is the description of all the parameters used by this method −
Following is a simple example showing the usage of this method.
<html>
<head> <title>The jQuery Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { function aClick() { $("div").show().fadeOut("slow"); } $("#bind").click(function () { $("#theone").on("click", aClick).text("Can Click!"); }); $("#unbind").click(function () { $("#theone").off("click", aClick).text("Does nothing..."); }); }); </script> <style> button { margin:5px; } button#theone { color:red; background:yellow; } </style> </head> <body> <button id="theone">Does nothing...</button> <button id="bind">Bind Click</button> <button id="unbind">Unbind Click</button> <div style="display:none;">Click!</div> </body> </html> This will produce the following result: hover( over, out ) Method The hover( over, out ) method simulates hovering (moving the mouse on, and off, an object). This is a custom method which provides an 'in' to a frequent task. Syntax Here is the simple syntax to use this method:
selector.hover( over, out )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $('div').hover( function () { $(this).css({"background-color":"red"}); }, function () { $(this).css({"background-color":"blue"}); } ); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:60px; } </style> </head> <body> <p>Move mouse on any square below to see the result:</p> <div class="div" style="background-color:blue;"></div> <div class="div" style="background-color:blue;"></div> <div class="div" style="background-color:blue;"></div> </body> </html> Move mouse on any square below to see the result: on( events [, selector ] [, data ], handler ) Method The on( events [, selector ] [, data ], handler ) method binds a handler to an event (like click) for all current − and future − matched element. Can also bind custom events. Possible event values − blur, focus, load, resize, scroll, unload, click etc. Syntax Here is the simple syntax to use this method −
selector.on( event, selector, data, handler )
Parameter Here is the description of all the parameters used by this method −
Following is a simple example showing the usage of this method. Here it binds click event with each <div> element −
<html>
<head> <title>The jQuery Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $('div').on('click', function( event ){ alert('Hi there!'); }); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:60px;} </style> </head> <body> <p>Click on any square below to see the result:</p> <div class="div" style="background-color:blue;"></div> <div class="div" style="background-color:green;"></div> <div class="div" style="background-color:red;"></div> </body> </html> This will produce the following result: Click on any square below to see the result: one( type, [data], fn ) Method The one( type, [data], fn ) method binds a handler to one or more events to be executed once for each matched element. The handler is executed only once for each element. Otherwise, the same rules as described in bind() apply. Possible event values: blur, focus, load, resize, scroll, unload, click etc. Syntax Here is the simple syntax to use this method:
selector.one( type, [data], fn )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method. Here it binds click event with each <div> element. Try to click any square two times, it won't react unlike bind() method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $('div').one('click', function( event ){ alert('Hi there!'); }); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:60px; } </style> </head> <body> <p>Click on any square below to see the result:</p> <div class="div" style="background-color:blue;"></div> <div class="div" style="background-color:green;"></div> <div class="div" style="background-color:red;"></div> </body> </html> This will produce the following result: Click on any square below to see the result: ready( fn ) Method The ready( fn ) method binds a function to be executed whenever the DOM is ready to be traversed and manipulated. This method is a replacement for using window.onload Syntax Here is the simple syntax to use this method:
selector.ready( fn )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("div").text("The DOM is now loaded..."); }); </script> <style> .div{ margin:10px;padding:12px; border:2px solid #666; width:200px; } </style> </head> <body> <div class="div" style="background-color:blue;"></div> </body> </html> This will produce the following result:
The DOM is now loaded...
The trigger( event, [data] ) method triggers an event on every matched element. Triggered events aren't limited to browser-based events, you can also trigger custom events registered with bind. Syntax Here is the simple syntax to use this method:
selector.trigger( event, [data] )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method. Here you would trigger a click event on square TWO by clicking on square ONE:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("#div1").click( function () { $("#div2").trigger('click'); }); $("#div2").click( function () { alert( "Square TWO is clicked"); }); }); </script> <style> div{ margin:10px;padding:12px; border:2px solid #666; width:60px; } </style> </head> <body> <span>Click square ONE to see the result:</span> <div id="div1" style="background-color:blue;">ONE</div> <div id="div2" style="background-color:blue;">TWO</div> </body> </html> This will produce the following result:
Click square ONE to see the result:
ONE
TWO
triggerHandler( event, [data] ) Method The triggerHandler( event, [data] ) method triggers all bound event handlers on an element (for a specific event type) WITHOUT executing the browser's default actions, bubbling, or live events. This method behaves very similarly to the trigger method, with two major exceptions:
Syntax Here is the simple syntax to use this method:
selector.triggerHandler( event, [data] )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { $("#old").click(function(){ $("input").trigger("focus"); }); $("#new").click(function(){ $("input").triggerHandler("focus"); }); $("input").focus(function(){ $("<span>Focused!</span>").appendTo("body").fadeOut(1000); }); }); </script> </head> <body> <button id="old">.trigger("focus")</button> <button id="new">.triggerHandler("focus")</button><br/><br/> <input type="text" value="To Be Focused"/> </body> </html> This will produce the following result: Click on any square below to see the result: unbind( [type], [fn] ) Method The unbind( [type], [fn] ) method does the opposite of bind, it removes bound events from each of the matched elements. Syntax Here is the simple syntax to use this method:
selector.unbind( [type], [fn] )
Parameters Here is the description of all the parameters used by this method:
Following is a simple example showing the usage of this method:
<html>
<head> <title>the title</title> <script type="text/javascript" src="/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" language="javascript"> $(document).ready(function() { function aClick() { $("div").show().fadeOut("slow"); } $("#bind").click(function () { $("#theone").click(aClick) .text("Can Click!"); }); $("#unbind").click(function () { $("#theone").unbind('click', aClick) .text("Does nothing..."); }); }); </script> <style> button { margin:5px; } button#theone { color:red; background:yellow; } </style> </head> <body> <button id="theone">Does nothing...</button> <button id="bind">Bind Click</button> <button id="unbind">Unbind Click</button> <div style="display:none;">Click!</div> </body> </html> This will produce the following result: Click on any square below to see the result: Event Helper Methods jQuery also provides a set of event helper functions which can be used either to trigger an event to bind any event types mentioned above. Trigger Methods Following is an example which would triggers the blur event on all paragraphs:
$("p").blur();
Binding Methods Following is an example which would bind a click event on all the <div>:
$("div").click( function () {
// do something here }); Here is a complete list of all the support methods provided by jQuery:
|