Example: Handling DOM Events

This example demonstrates how to respond to DOM events from a Node instance.

Clicking the box will report some event details.

lorem ipsum dolor sit

Click anywhere in the box to see some event data.

Setting up the HTML

First we need some HTML to work with.

<div id="demo">
    <p><em>lorem</em> <code>ipsum</code> <strong>dolor</strong> <span>sit</span></p>
    <div id="event-result"></div>
</div>

Creating the Event Handler

Next we will create a handler to run when the event is fired. In our handler we will update the node with some of the properties of the event.

var onClick = function(e) {
    var type = e.type,
        currentTarget = e.currentTarget, // #demo
        target = e.target; // #demo or a descendant

    Y.one('#event-result').setContent('<dl>' +
        '<dt>type</dt><dd>' + e.type + '</dd>' +
        '<dt>target</dt><dd>' + target.get('tagName') + '</dd>' +
        '<dt>currentTarget</dt><dd>' + currentTarget.get('tagName') +
            '#' + currentTarget.get('id') + '</dd></dl>');
};

Listening for Events

We can assign our handler to all of the items by using the all method to get a NodeList instance and using the on method to subscribe to the event.

Y.one('#demo').on('click', onClick);

Complete Example Source

<link href="../assets/node/node.css" rel="stylesheet" type="text/css">
<div id="demo">
    <p><em>lorem</em> <code>ipsum</code> <strong>dolor</strong> <span>sit</span></p>
    <div id="event-result">Click anywhere in the box to see some event data.</div>
</div>

<script type="text/javascript">
YUI().use('node', function(Y) {
    var onClick = function(e) {
        var type = e.type,
            currentTarget = e.currentTarget, // #demo
            target = e.target; // #demo or a descendant
            
        Y.one('#event-result').setContent('<dl>' +
            '<dt>type</dt><dd>' + e.type + '</dd>' +
            '<dt>target</dt><dd>' + target.get('tagName') + '</dd>' +
            '<dt>currentTarget</dt><dd>' + currentTarget.get('tagName') +
                '#' + currentTarget.get('id') + '</dd></dl>');
    };

    Y.one('#demo').on('click', onClick);
});
</script>