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.