"e.target" vs "this"

Viewing the difference between e.target and this when executing a delegated handler.

by LeGEC

HTML

<p>Click on the various nodes below to view the differences between "e.target" and "this" when executing the delegated click handler :</p>
<div id="target">   
    <span class="green" data-tag="1">
        <i data-tag="1">1 -</i> <b data-tag="1">click me : <input data-tag="1" type="checkbox" /></b>
    </span>
 <span class="green" data-tag="2">
        <i data-tag="2">2 -</i> <b data-tag="2">click me : <input data-tag="2" type="checkbox" /></b>
    </span>
 <span class="green" data-tag="3">
        <i data-tag="3">3 -</i> <b data-tag="3">click me : <input data-tag="3" type="checkbox" /></b>
    </span>

</div>
<div id="log">
    <p>e.target : <span id="evtTarget">-</span>

    </p>
    <p>this : <span id="this">-</span>

    </p>
</div>

CSS

#target {margin: 36px 0}
span.green {
    diplay: inline-block;
    border: 2px solid green;
    margin: 3px;
    padding: 12px
}
span.green p {
    border: 1px solid black
}

JavaScript

function getName(node) {
    var tgt = node.localName;
    var className = node.className;
    if (className) {
        tgt += '.' + className;
    }
    var tag = node.getAttribute('data-tag');

    return tgt + ' ' + tag;
}

$('div#target').on('click', 'span.green', function (e) {
    $('#evtTarget').html(getName(e.target));
    $('#this').html(getName(this));
});