Cycle plugin & Fancybox conflict
On my latest project, I was trying to integrate Fancybox plugin and jQuery Cycle plugin on the same page. They didn’t play nicely together at first but eventually I got them to work.
The best approach was to use jQuery.noConflict();
First off, I call the FancyBox js files before the Cycle plugin and I reassigned the FancyBox JQuery shortcut to use $jq instead of the standard $.
Here’s the code for how I did it:
<!-- FANCY BOX --> <link rel="stylesheet" href="/scripts/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> <script type="text/javascript"> var $jq = jQuery.noConflict(); </script> <script type="text/javascript" src="/scripts/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<!-- JQUERY CYCLE -- > <!-- include jQuery library --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <!-- include Cycle plugin --> <script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
$("#s4")
.after('<div id="slide-show-nav">')
.cycle({
fx: 'fade',
speed: 800,
timeout: 4300,
pause: 1,
pager: '#slide-show-nav',
pagerAnchorBuilder: function(idx, slide) {
return '<a href="#" style="width: 15px;"> </a>';
}
});
});
</script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$jq("a[rel=example_group]").fancybox({
'transitionIn' : 'none',
'transitionOut' : 'none',
'titlePosition' : 'over',
'titleFormat' : function(title, currentArray, currentIndex, currentOpts) {
return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' ' + title : '') + '</span>';
}
});
});
</script>