I have this code which I want to add into a specific page of mine. I don’t want to create a file for it and then include etc (though do tell if that would be the only way). Also I don’t want it to be in the header as it would be included in all pages. The code is:
<script type="text/javascript">
$(function () {
$('input[name=done]:radio').click(function () {
if ($(this).val() === "Yes") {
$('#p-days').show();
} else {
$('#p-days').hide();
}
});
$('input[name=already-b]:radio').click(function () {
if ($(this).val() === "Yes") {
$('#div-name').show();
} else {
$('#div-name').hide();
}
});
});
</script>
I added this in the editor by selecting the Text (not in Visual mode.) But it is not working. Any ideas what I’m doing wrong?
Thanks.
Although @s_ha_dum is correct you WILL need to use jQuery no conflict within WordPress the original question is left unanswered.
There are a couple of ways to do this
Based on Page name/slug WordPress in theme’s functions.php
This method uses the WordPress hook
wp_enqueue_scripts
my-nifty-custom.js
In your
functions.php
add the followingNote if you are using a child-theme or want to do it morebetter wrap the whole thing in
after_setup_theme
ie:Based on Body Class (DOM-based Routing)
This is a little bit more complicated. Luckily Paul Irish wrote a fantastic blog about it here: http://www.paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/
If you use this method it will get your custom JS on a per page basis based on the Body Class. For Example
<body class="nifty">
Then you would use:
The only problem with this is the page must have the body class you are calling. For this WordPress has the function
body_class
So which method should you use?
I recommend a combination of both. Create one JavaScript file that uses Paul’s method. Then use
wp_enqueue_scripts
to call that method.Lazy header.php method
Lastly there IS always the lazy way (which I don’t recommend but am noting just for reference.
In your header.php you can do:
WordPress loads jQuery in “No Conflict” mode. The “$” alias doesn’t work. Use the full “jQuery”–
jQuery.$.ajax({...
or wrap your script like the example from the jQuery docs…There is information about this in the Codex as well.
I’ve ran into this problem every time I wanted to use a jQuery plugin in my posts and pages. My solution was to create a generic jQuery plugin shortcode http://www.coding-dude.com/wp/web-design/javascript/how-to-use-jquery-plugin-with-wordpress-plugin-tutorial/