I've been working on localhost and everything looks fine but then when I uploaded my Wordpress theme online, all of the jQuery plugin functions are undefined!

One solution that worked (which I haven't tested a lot so I still don't know if it will work in the long run) is to import the javascript file from the plugin's main website or github page. I don't really prefer this "solution."

Another is the solution here but I haven't tested this a lot also. My issue here is I've used jQuery in another theme and everything works using just $, but in my new theme it doesn't work with $ and so I have to use $j instead. It's just that I'm very used to using just $.

Can someone explain this weird phenomenon? Thank you! :)

  • 2
    Do test the solution you linked to yourself?.. :) Using just $ for jQuery is not supported in WordPress. – Rarst Oct 11 '12 at 17:57
  • Is jQuery itself loading when your theme is "live"? – Rachel Baker Oct 11 '12 at 18:05
  • What's the site URL? (So we can see the errors). How are you calling the main jQuery library: via wp_enqueue_script in functions.php or by a simple link in header.php? – markratledge Oct 11 '12 at 18:13
  • Also, do look up how JS closures work. Always use closures. That fixes your problems and many other JS oddities in one simple step. – Miha Rekar Oct 11 '12 at 19:10

You can use $ but it is advised you don't. Use jQuery or something like the example in your link, if you must use $ you can do so like this;

jQuery(document).ready(function($) {
    // $() will work as an alias for jQuery() inside of this function
   //$ will cause problems if put here:)

To use it for just a function you can append jQuery to the end like:

(function($) {
    // $() will work as an alias for jQuery() 
})(jQuery);  //dont forget this part
| improve this answer | |
  • How about functions outside, do I pass $ as an argument as well? – ton Oct 12 '12 at 14:19
  • To use $ in this case it must be inside a functions defined as function($) , anything outside that will cause a conflict. But you can use it for any functions if you also append jQuery to the end, Ill edit my answer. – Wyck Oct 12 '12 at 16:16

This is happening because WordPress loads jQuery in "no conflict" mode.

I'm also in the habit of using $, and there's a fairly simple solution. Just modify your (document).ready function like so:

jQuery(document).ready(function($) {
    // $() will work as an alias for jQuery() inside of this function

For more info, check out the Codex section on this topic.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.