Evitando duplicação de script – jQuery
Este post, é uma aplicação direta, dos conceitos que expliquei aqui: Aprendi jQuery, e agora ?
Acabei de ver um user no fórum que precisava disparar uma mesma rotina, para campos input e select.
Porém, sabemos que para selects, o evento a ser usado, é o onchange, e para inputs, onkeypress | onblur.. |
Exatamente por esse motivo, não podemos fazer simplesmente:
$('input, select').blur(function(){ alert( 'rotina' ); });
ou
$('input, select').change(function(){ alert( 'rotina' ); });
pois não conseguiríamos separar os eventos, e fazer:
$('input').blur(function(){ alert( 'rotina' ); }); $('select').change(function(){ alert( 'rotina' ); });
não é lega, pois estamos duplicando esse
alert( 'rotina' );
Logo, lembrando do que falei lá em cima, no outro post, devemos poder fazer:
var rotina = function(){ alert( 'rotina' ); }; $('input').blur( rotina ); $('select').change( rotina );
E não é que funciona !! pois é.. javascript é uma linguagem maravilhosa de linda.. hehe
E se fosse mais complicado, precisa-se usar o this.. ?
Sem problemas. E se vc não confia em mim, teste por você mesmo:
<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> <script> $(document).ready(function(){ var verificacao = function(){ var id = $( this ).attr('id'); alert( id ); }; $('#id1').click( verificacao ); $('#id2').click( verificacao ); }); </script> </head> <body> <span id="id1">aqui</span> <span id="id2">aqui</span> </body> </html>
é isso ai.
Sabia disso ? Ou não sabia ainda, e acabou duplicando scripts ?
Comente.