Marshall
Marshall

Reputation: 156

JQuery doesn't appear to be working in Wordpress

I have the following in the tags of the header in my wordpress theme, but no matter what it will not work.

<script>JQuery(function() {JQuery('#fader img:not(:first)').hide();JQuery('#fader img').css('position', 'absolute');JQuery('#fader img').css('top', '0px');JQuery('#fader img').css('left', '50%');JQuery('#fader img').each(function() {var img = JQuery(this);JQuery('<img>').attr('src', JQuery(this).attr('src')).load(function() {img.css('margin-left', -this.width / 2 + 'px');});});var pause = false;function fadeNext() {JQuery('#fader img').first().fadeOut().appendTo(JQuery('#fader'));JQuery('#fader img').first().fadeIn();}function fadePrev() {JQuery('#fader img').first().fadeOut();JQuery('#fader img').last().prependTo(JQuery('#fader')).fadeIn();}JQuery('#fader, #next').click(function() {fadeNext();});JQuery('#prev').click(function() {fadePrev();});JQuery('#fader, .button').hover(function() {pause = true;},function() {pause = false;});function doRotate() {if(!pause) {fadeNext();}}var rotate = setInterval(doRotate, 2000);});</script>

What a mess right? To show that I have been researching this, a previous answer said to remove all whitespaces and change all $ with JQuery. I want to simply fade between a few images in the fader ID.

I have even made a fade.js file, and included it in the functions file, to no avail.

Here is my CSS...

    #fader {
    position: relative; 
    width: 100%;
    height: 400px;
}

.button {
    background-color: green;
    width: 50px;
    height: 30px;
    font-size: 20px;
    line-height: 30px;
    text-align: center;
    position: absolute;
    top: 30px;  
}

#next {
    right: 100px;   
}

#prev {
    left: 100px;  
}

And my HTML ...

<div id="fader">
    <img src="http://dummyimage.com/600x400/000/fff.png&text=Image1"/>
    <img src="http://dummyimage.com/200x400/f00/000.jpg&text=Image2"/>
    <img src="http://dummyimage.com/100x100/0f0/000.png&text=Image3"/>
    <img src="http://dummyimage.com/400x400/0ff/000.gif&text=Image4"/>
    <img src="http://dummyimage.com/350x250/ff0/000.png&text=Image5"/>
</div>

Instead of showing one image and fading between the 5 images supplied, it just shows all 5 images at the same time.

I first thought this could be a JQuery problem, so tested to see if JQuery was functioning, which it is.

Here is the original JQuery before I removed whitespaces and swapped $ for JQuery.

$(function() {
$('#fader img:not(:first)').hide();
$('#fader img').css('position', 'absolute');
$('#fader img').css('top', '0px');
$('#fader img').css('left', '50%');
$('#fader img').each(function() {
    var img = $(this);
    $('<img>').attr('src', $(this).attr('src')).load(function() {
        img.css('margin-left', -this.width / 2 + 'px');
    });
});

var pause = false;

function fadeNext() {
    $('#fader img').first().fadeOut().appendTo($('#fader'));
    $('#fader img').first().fadeIn();
}

function fadePrev() {
    $('#fader img').first().fadeOut();
    $('#fader img').last().prependTo($('#fader')).fadeIn();
}

$('#fader, #next').click(function() {
    fadeNext();
});

$('#prev').click(function() {
    fadePrev();
});

$('#fader, .button').hover(function() {
    pause = true;
},function() {
    pause = false;
});

function doRotate() {
    if(!pause) {
        fadeNext();
    }    
}

var rotate = setInterval(doRotate, 2000);

});

Thanks in advance!!!!!!!

I love you ;)

Upvotes: 0

Views: 78

Answers (1)

Amit Joki
Amit Joki

Reputation: 59232

Use jQuery or $ and not what you are using.

You are using JQuery, which is wrong.

But if you really want to use JQuery,then you can do the below:

var JQuery = jQuery;

Now, after the assignation, you can use JQuery

Upvotes: 3

Related Questions