Is there any way to prevent default event and then fire it again with jQuery?
Javascript is not multi-threaded. It is event driven and events fire in the order in which you load them. Therefore, if you simply leave out the ev.preventDefault()
in your click event altogether, it won't fire the default action until the function exits.
See jsFiddle here
EDIT per @Greg's comment:
The only scenario in which the above is not true is with asynchronous functions. In that scenario you would want to prevent the default action first and then in the asynchronous callback function, re-fire the default action.
The link will not go till after the work is done, so you can do:
$('a').click(function(ev){
//do something here
});
preventDefault marks the event as handled so that when your click function exits, the default action isn't taken. If you don't call preventDefault then the default click action won't get called until your click function exits. So remove it and it'll work as you are suggesting.