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.