Unbind/Destroy fancybox 2 events

前端 未结 4 1870
孤城傲影
孤城傲影 2021-01-12 11:49

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

相关标签:
4条回答
  • 2021-01-12 12:17

    You can use this code to destroy fancybox functionality on links:

    jQuery('a').unbind('click.fb').removeData('fancybox');
    
    0 讨论(0)
  • 2021-01-12 12:22

    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();

    jsFiddle

    Here is a jsFiddle demonstrating

    http://jsfiddle.net/DigitalBiscuits/DBvt7/211/

    0 讨论(0)
  • 2021-01-12 12:34

    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.

    0 讨论(0)
  • 2021-01-12 12:35

    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");


    JSFiddle

    Check out this JSFiddle for reference.

    0 讨论(0)
提交回复
热议问题