Correct way to write jQuery functions in WordPress

As suggested in comments, this kind of error is caused by the fact that WordPress loads jquery in noconflict mode. The most common workaround is to wrap all functions in your script file:

jQuery(document).ready(function($) {  ... scripts ... }

Another, more risky option is to switch off noconflict mode by starting the script file with this:

$ = jQuery.noConflict();