Olá, Eduardo.
É exatamente isso mesmo.
O que talvez não foi explicado é que o JavaScript possui um sistema de captura de click:
Existem duas fases, uma é a capturing
que acontece do maior elemento (window
) até o menor elemento (aquele que realmente foi clicado). E existe a fase de bubbling
, que vai do elemento clicado vai até o elemento maior (window
).
No caso do método .on( "click", "tr", callback);
você está usando esse recurso do JavaScript. Quem tem o listener
é o elemento com o id #tabela
, e quando você clicar no <tr>
na fase de bubbling
ele vai ver que tem um listener
no #tabela
e disparar o callback
.
Além da vantagem de todo elemento <tr>
novo que entrar "recebe" o listener
, você ganha que agora só mantém um listener
na página ao invés de um para cada <tr>
.
Se você olhar na documentação do jQuery verá que ele usa o recurso de bubbling
:
An event-delegation approach attaches an event handler to only one element, the tbody, and the event only needs to bubble up one level (from the clicked tr to tbody):
$( "#dataTable tbody" ).on( "click", "tr", function() {
console.log( $( this ).text() );
});
Conseguiu entender o conceito?