Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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! :)

share|improve this question
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? –  songdogtech 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
add comment

2 Answers 2

up vote 2 down vote accepted

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;

$.noConflict();
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
share|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
    
Nice! Thanks! :) –  ton Oct 12 '12 at 17:17
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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