Se você achar que seu código jQuery está usando event.preventDefault()
o tempo todo, pode secar esse código usando combinadores de método. Há uma ótima biblioteca que você pode usar aqui .
Que tal um exemplo:
var preventer = before(function (event) {
event.preventDefault();
alert('Preventing Default Behaviour');
});
var handleClick = function () {
alert($(this).attr("href"));
};
$("#link").click(preventer(handleClick));
Então, o que está acontecendo aqui? Se você não está familiarizado com combinadores de método (também conhecidos como decoradores de método), isso pode parecer um pouco estranho para você.
A primeira linha de código define uma nova função, chamada preventer
, que envolverá o event.preventDefault()
em uma função reutilizável. Eu adicionei um alert
lá para que você possa ver onde isso acontece na pilha de chamadas ao testá-lo.
Você notará que, ao definir preventer
, usei uma função chamada before
. A before
função vem direto da biblioteca de combinadores de métodos mencionada acima. É aqui que a mágica acontece. A before
função aceita uma função como parâmetro e retorna uma nova função como resultado. A função resultante, neste caso preventer
, aceita ela própria uma função que é considerada o código principal a ser executado. O que preventer
faz é executar a função passada para before
antes de executar o código passado para si mesmo.
Depois de entender isso, você entenderá como a função before envolve a função. Espero que seja mais fácil de entender do que escrever!
Confira em ação, com este jsFiddle