JQuery: Passando $(this) para função

Neste post, mostro 2 formas de usar o $(this) para saber em qual campo foi pressionado uma tecla.

Na forma 1 temos que passar o $(this) como parâmetro da função, pois o evento ocorre em uma função anônima.

Na forma 2 não há necessidade de passar o $(this), pois a função é declarada.

<table>
  <tr>
     <td><input type="text" name="campo1" data-id="1"></td>
     <td><input type="text" name="campo2" data-id="2"></td>
     <td><input type="text" name="campo3" data-id="3"></td>
  </tr>
</table>
<p id="resultado"></p>
// forma 1
$("table").on("keypress", "input", function(){
   // tem que passar $(this) como parâmetro da função
   nome_funcao( $(this) );
});
 
function nome_funcao( elemento ){
    // imprime resultado
    $("#resultado").html( "Input - ID: "+elemento.data("id") );
}
 
// forma 2
// não precisa passar $(this) como parâmetro da função
$("table").on("keypress", "input", nome_funcao);
 
function nome_funcao(){
    // imprime resultado
    $("#resultado").html( "Input - ID: "+ $(this).data("id") );
}

Para testar os códigos, clique nos links abaixo:

Forma 1

Forma 2

Um comentário em “JQuery: Passando $(this) para função

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *