There appears to be some conflicts between the codex and the twentyfourteen theme code with respect to which action to hook to load your live preview .js (ex: customizer.js)
In the twentyfourteen theme, the live preview handler, customizer.js, is loaded using customize_preview_init:
function twentyfourteen_customize_preview_js() {
wp_enqueue_script( 'twentyfourteen_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20131205', true );
}
add_action( 'customize_preview_init', 'twentyfourteen_customize_preview_js' );
However, in the codex, and in this answer, we are advising to use customize_controls_enqueue_scripts
3 - Create an action hooked to 'customize_controls_enqueue_scripts' that enqueues the js file
When I enqueue using that method, the .js is attached to the parent DOM (the customizer controls window itself), not the preview iframe (the "About" document in chrome dev preview) as you can see from the screenshot below.
