jQuery Events

Learn about jQuery events in this section. In most web applications, the user performs actions to trigger operations. For example, clicking a save button to save data triggers a click event and its handler function.



jQuery Event Methods

The jQuery library provides methods to handle DOM events. Most jQuery methods correspond to native DOM events.

Category jQuery Method DOM Event
Form events blur onblur
change onchange
focus onfocus
focusin onfocusin
select onselect
submit onsubmit
Keyboard events keydown onkeydown
keypress onkeypress
keyup onkeyup
Mouse events click onclick
dblclick ondblclick
mousedown onmousedown
mouseenter onmouseenter
mouseleave onmouseleave
mousemove onmousemove
mouseout onmouseout
mouseover onmouseover
mouseup onmouseup
Browser events error onerror
resize onresize
scroll onscroll
Document loading load onload
ready
unload onunload

Event Handling

Handle DOM events using jQuery methods by selecting DOM element(s) and invoking the appropriate jQuery event method.

Handle Button Click Event

Syntax

$('#saveBtn').click(function () {
    alert('Save button clicked');
});

Event Object

jQuery passes an event object to every event handler, providing properties and methods for cross-browser consistency (e.g., target, pageX, pageY, relatedTarget).

Syntax

$('#saveBtn').click(function (eventObj) {
    alert('X =' + eventObj.pageX + ', Y =' + eventObj.pageY);
});

this Keyword in Event Handler

The this keyword in an event handler refers to the DOM element that triggered the event.

Syntax

$(':button').click(function (eventObj) {
    alert(this.value + ' ' + this.type + ' clicked');
});

Hover Events

jQuery provides methods for mouse hover events such as mouseenter, mouseleave, mousemove, mouseover, mouseout, and mouseup.

Syntax

$('#myDiv').mouseenter(function () {
    $(this).css('background-color', 'green');
});
$('#myDiv').mouseleave(function () {
    $(this).css('background-color', 'red');
});

Using hover() Method

Use the hover() method to handle both mouseenter and mouseleave events.

Syntax

$('#myDiv').hover(
    function () {
        $(this).css('background-color', 'green');
    },
    function () {
        $(this).css('background-color', 'red');
    }
);

Event Binding using on()

Use the on() method to attach event handlers to elements. This method provides more flexibility compared to shorthand methods.

Syntax

$('#saveBtn').on('click', function () {
    alert('Save Button clicked');
});

Filter descendants of selected elements using a selector.

Syntax

$('#myDiv').on('click', ':button', function () {
    alert('Button clicked');
});

Binding Multiple Events

Specify multiple event types separated by a space to bind multiple events to an element.

Syntax

$('#myDiv').on('mouseenter mouseleave', function() {
    $(this).text('The mouse entered or left the div');
});

Specify Named Function as Event Handler

Create separate functions and specify them as handlers. This approach is useful for reusing handlers across different events or elements.

Syntax

var mouseHandler = function() {
    alert('The mouse entered');
};
$('#myDiv').on('mouseenter', mouseHandler);

The jQuery on() method replaces live() and delegate() methods.

Event Bubbling

Event bubbling is demonstrated in the example below.

Syntax

$('div').click(function (event) {
    alert(event.target.tagName + ' clicked');
});

in the above example, clicking on a element will display an alert message 'SPAN clicked' even though we have not handled the click event of . This is called event bubbling.

Points to Remember

  • The jQuery event methods allow you to attach an event handler or fire native DOM events.
  • Use the selector to get the reference of an element(s) and then call jQuery event methods to fire it or attach an event handler.
  • Important DOM manipulation methods: click(), dblClick(), change(), submit(), keyup(), keydown(), mouseenter(), mouseleave(), hover(), etc.