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.