This is sort of a condensed version of the code, the real version is too long to post but this is enough to represent the concept. I am using this to switch guitar diagrams based on several choices represented by anchors with the corresponding id in the href=””. After spending several days getting it to work just right on a static html page, the script won’t work in a WordPress page which is where I intend to use it. I have tried it with the script in the head or inline (which shouldn’t matter) – but either way it will not function. I know that WordPress and certain plugins use Jquery so there may be a version mismatch causing conflicts. I am not (yet) an expert in javascript but I know there are several ways to skin a cat as the saying goes, I just need to find one that plays nice with WordPress. Any help would be greatly appreciated…
<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
var divswitch = $('div.diagram_container a');
divswitch.bind('click',function(event){
var $anchor = $(this);
var ids = divswitch.each(function(){
$($(this).attr('href')).hide();
});
$($anchor.attr('href')).show();
event.preventDefault();
});
});
</script>
<style>
.diagram {
margin: 0;
width: 100%;
}
.diagram_container {
width: 100%;
}
</style>
<div id="RH_RW_Div" class="diagram_container" style="float:left; display:block;">
<div class="diagram_menu">
<a class="checked" href="#RH_RW_Div"><span class="checkbox_label">Right Handed</span></a>
<a class="unchecked" href="#LH_RW_Div"><span class="checkbox_label">Left Handed</span></a>
</div>
<img class="diagram" src='images/RH_RW.gif' /><br />
</div>
<div id="LH_RW_Div" class="diagram_container" style="float:left; display:none;">
<div class="diagram_menu">
<a class="unchecked" href="#RH_RW_Div"><span class="checkbox_label">Right Handed</span></a>
<a class="checked" href="#LH_RW_Div"><span class="checkbox_label">Left Handed</span></a>
</div>
<img class="diagram" src='images/LH_RW.gif' /><br />
</div>
WordPress uses by default jQuery.noConflict(). This is to assure that there is no conflict by other libraries using the
$
variable. That’s why your console says it’s not a function.However, obviously, the
jQuery
variable still works, and you should use that, and passing to your function the$
variable yourself to enable the shorthand version ofjQuery
.So your code should look like this:
My guess is that your WordPress install or a plugin is already loading up jQuery in the head. Check to see if it exists there, and if it does, don’t call it again.
If that doesn’t do it and you have this site online, send me the link and I’ll take a look.
Calling jQuery twice will often lead to problems. There is also a proper way to load jQuery and override the WordPress version if you specifically need 1.8.3 (wp_register_script and wp_enqueue_script), but I don’t think you need to go down that route yet.