I am having a strange issue, I have code that pulls content via ajax and then binds Fancybox (2) to certain elements. The issue is that when I \"refresh\" this page I call t
You can use this code to destroy fancybox functionality on links:
jQuery('a').unbind('click.fb').removeData('fancybox');
If you include the attribute live:false
then you will be able to remove the handlers from your elements using .off()
After digging through the source code i've also found that the specific event is click.fb-start
, if you want to target it specifically.
For example:
$(".fancybox").attr('rel', 'gallery').fancybox({live: false}); //remove click handler $('.fancybox').off("click.fb-start");
FYI In the documentation it says the following about live
:
live: If set to true, fancyBox uses "live" to assing click event. Set to "false", if you need to apply only to current collection, e.g., if using something like - $( "#page" ).children().filter('a').eq(0).fancybox();
Here is a jsFiddle demonstrating
http://jsfiddle.net/DigitalBiscuits/DBvt7/211/
Thanks for the response, I have not tested the above, I used a different approach to resolve the issue.
What I did was instead of using the default Fancybox functionality I created functions for where I would need Fancybox and manually called Fancybox in each case which thus didn't bind the event.
This isn't the best approach and the above may be better but I will get to testing this in the new year :)
Thanks again.
I know this is an old thread, but just wanted to confirm OAC Designs is absolutely right:
Unbinding the .fancybox
links only works if the live
parameter is set to false
.
However, you can also destroy Fancybox at the dom level, regardless of the live
parameter, by doing:
$(document).unbind("click.fb-start");
Or
$(document).off("click.fb-start");
Check out this JSFiddle for reference.