WP_enqueue_script() loads them always in wp_footer()?

All of these scripts are already registered to print in the footer. See wp-includes/script-loader.php for details. When you try to register the scripts again WordPress doesn’t change that.

The workaround would be to register a new script for wp_head with those scripts as dependencies (the third parameter of wp_enqueue_script()).

Do not register the scripts in another order before WP does it! This will affect wp-admin and probably other pages too.

But the real question is: Why do you need the scripts loaded so early? Fix that instead. My guess: You are using some inline script and don’t wait until the document is loaded. That is hardly ever necessary.

Also note that $ is not a jQuery object in WordPress.
You have to use jQuery( function( $ ) { /* your code with $ here. */ }.