2

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!

1
  • (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. Commented Jul 25, 2012 at 2:39

2 Answers 2

7

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

6

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.

3
  • 2
    That's a protocol relative url, but it seems WordPress can't handle them.
    – Milo
    Commented Jul 24, 2012 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
    Commented Jul 24, 2012 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
    Commented Jul 25, 2012 at 16:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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