This little conflict error drove me mad for quite a little bit.
I run several websites, some personal, some for clients, quite a few of them run on WordPress. Its quick, it’s easy, and its fairly secure if configured properly. Even better, its updated and patched often, and has a whole bunch of free plugins that allow you to extend functionality easily. With all this freedom often comes a price. I paid such a price recently when I ran into a problem post WordPress 3.5 to 3.6 upgrade on one of my client’s sites. I always test updates in development environment so the actual client’s website was not affected, however I did spend a considerable amount of time chasing this down. The error was with jQuery and its helper files. It prevented a lot of the nice flashy JavaScript functionality that most clients like. Namely the issue was with anything that involved easing.
Fire Bug and Chrome Consoles were reporting the following:
jQuery.easing[jQuery.easing.def] is not a functionI went searching for what could be causing this. After a little bit of digging I was able to determine that after the DOM is fully loaded there is a plugin that’s dynamically appending an older version of jQuery to the end of the head section of the site. This explains the jQuery.easing.def not being a function.
/* Plugin Name: Latest jQuery Plugin URI: http://www.andretimokhin.com Description: This plugin updates jQuery to the latest version. Version: 1 Author: Andre Timokhin Author URI: http://www.andretimokhin.com/ License: GPL3 */ function latest_jquery_update() { //Remove any already registered jquery libraries wp_deregister_script('jquery'); //Enqueue our own version of jQuery located in /wp-content/plugins/latest_jquery/js/* wp_enqueue_script('jquery', plugins_url('/js/jquery-2.0.3.min.js', __FILE__), false, '2.0.3'); // Also load the migrate library plugin wp_enqueue_script('jquery-migrate', plugins_url('/js/jquery-migrate-1.2.1.min.js', __FILE__), array('jquery'), '1.2.1'); // require jquery, as loaded above } add_action('wp_enqueue_scripts', 'latest_jquery_update');