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 am using this as my starter template: www.html5reset.org/

It's pretty nice, but I believe something is wrong with jQuery in there.

In the functions.php it says:

// Load jQuery
    if ( !function_exists(core_mods) ) {
        function core_mods() {
            if ( !is_admin() ) {
                wp_deregister_script('jquery');
                wp_register_script('jquery', ("//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"), false);
                wp_enqueue_script('jquery');
            }
        }
        core_mods();
    }

This seems fine to me - is it alright?

There also is a premade JS file. In this file it says:

// remap jQuery to $
(function($){})(window.jQuery);

I don't know really what this does, but it seems also ok.

To test if jQuery works, I tried the following - none of it is woking, jQuery is not defined.

$(document).ready(function() {
    alert("This is a test.");
});

jQuery(document).ready(function() {
    alert("This is a test.");
});

$(document).ready(function($) {
    alert("This is a test.");
});

So, can you tell ma what could be wrong with this? Thank you!

share|improve this question
    
(function($){})(window.jQuery); is a wrapped method (to avoid polluting the global namespace), so I do not see how $ would be available outside that function. –  Joseph Jul 25 '12 at 2:39

2 Answers 2

up vote 4 down vote accepted

just to help a bit further ... WordPress runs jQuery in 'safe' mode

which means in WordPress you need to write code like this
jQuery(document).ready(function() {

and not like this

$(document).ready(function() {

But what the HTML5BP has done is added this funky bit of code (probably kindly to help Developers)

// remap jQuery to $
(function($){})(window.jQuery);

FYI there is a 3rd method of switching back to the $ symbol for jQuery which is to start your code like this:

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

from this point on in your code you can now use $ to refer to jQuery

share|improve this answer

There's a typo in wp_register_script() where "http:" is missing in the URL. Fix that and you'll at least be loading jQuery.

As an aside, many consider it not a great practice to overwrite the default WordPress jQuery and I've removed the code you reference from my customized HTML5reset blank theme that I use.

share|improve this answer
2  
That's a protocol relative url, but it seems WordPress can't handle them. –  Milo Jul 24 '12 at 21:56
    
Alright, thank you! I've also removed it and now it's working. Do you have any resources why it's considered bad practice? –  Sven Jul 24 '12 at 22:41
    
It's a "Theme review" requirement for inclusion in the .org repository. By leaving jQuery alone, you ensure that WordPress and other plugins can safely assume what jQuery version you're using. You can avoid this probably by always making sure all your themes are updated to use the current WP standard version of jQuery but that's pretty hard to maintain. –  mrwweb Jul 25 '12 at 16:33

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.