I don't think jQuery is the correct tool here. Your problem is that the events queue while your JavaScript does something.
So what you really need is something like "swallow all queued click events when I return."
I suggest to move the rebinding of the click handlers into a new function and call that in a timer. That allows the browser to process the queued events.
And maybe unbinding is the wrong approach as well. If you're always using the same handler, turn it into an object with a skip property:
skip: false,
run: function( e ) {
if (this.skip) return;
this.skip = true;
... do something ...
var self = this;
setTimeout( function() { self.skip = false; }, 50 );
}
[EDIT] Another alternative: If all the links are in one HTML element (like a parent div or something), you can install a click handler for that element which does nothing. That would also swallow the click events. You will still need the timeout handler to make sure the events are processed after you return from your function.