PDA

View Full Version : Javascript conflict?



secretmachines
08-09-2011, 02:35 PM
hi everyone

I was wondering if anyone would be kind enough to look at my script and see if they can identify a javascript conflict?

I have 3 scripts installed: google analytics, lightbox, showreel

All work independently, but not when all 3 are installed, the problem is the lightbox which opens the image as a fresh page, rather than as the lightbox (the lightbox should work when you click the image of the old building)

This leads me to think there must be some kind of conflict?

thanks so much!

www.thecommunityforum.org.uk/kirkley/2011/the-kirkley-centre/history.html

jscheuer1
08-09-2011, 02:59 PM
Move all of this into the head of the page before the three script tags for lightbox and make the highlighted additions/changes:


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>

<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {

//Set Default State of each portfolio piece
$(".paging").show();
$(".paging a:first").addClass("active");

//Get size of images, how many there are, then determin the size of the image reel.
var imageWidth = $(".window").width();
var imageSum = $(".image_reel img").size();
var imageReelWidth = imageWidth * imageSum;

//Adjust the image reel to its new size
$(".image_reel").css({'width' : imageReelWidth});

//Paging + Slider Function
rotate = function(){
var triggerID = $active.attr("rel") - 1; //Get number of times to slide
var image_reelPosition = triggerID * imageWidth; //Determines the distance the image reel needs to slide
$(".paging a").removeClass('active'); //Remove all active class
$active.addClass('active'); //Add active class (the $active is declared in the rotateSwitch function)

//Slider Animation
$(".image_reel").animate({
left: -image_reelPosition
}, 500 );
};

//Rotation + Timing Event
rotateSwitch = function(){
play = setInterval(function(){ //Set timer - this will repeat itself every 3 seconds
$active = $('.paging a.active').next();
if ( $active.length === 0) { //If paging reaches the end...
$active = $('.paging a:first'); //go back to first
}
rotate(); //Trigger the paging and slider function
}, 2000); //Timer speed in milliseconds (3 seconds)
};
rotateSwitch(); //Run function on launch

//On Hover
$(".image_reel a").hover(function() {
clearInterval(play); //Stop the rotation
}, function() {
rotateSwitch(); //Resume rotation
});

//On Click
$(".paging a").click(function() {
$active = $(this); //Activate the clicked paging

//Reset Timer
clearInterval(play); //Stop the rotation
rotate(); //Trigger rotation immediately
rotateSwitch(); // Resume rotation
return false; //Prevent browser jump to link anchor
});
});
</script>

There could still be other problems.

It would be better to drop lightbox and use slimbox2 instead:

http://www.digitalia.be/software/slimbox2

If you do that, use only one external tag for jQuery and put it before slimbox's external script tag and your on page code there. I'd still recommend updating to at least jQuery 1.5 as shown in the above code block.

For more on the SlimBox angle, see:

http://www.dynamicdrive.com/forums/blog.php?b=247

secretmachines
08-10-2011, 07:45 AM
ah thanks so much John, will go and give that a go now! :)

secretmachines
08-10-2011, 09:39 AM
you are a star John, thank you so much... I'm a bit of a javascript novice and would never have known to make those changes... it seems to be working a dream :D