javascript - how to bind fancybox to dynamic added element? -
i use jquery fancybox 1.3.4 pop form.
but found fancybox can't bind element dynamic added. example when add html element current document.
like : first append element body use jquery,
$(document.body).append("<a href="home/index" class="fancybox"/>"); and call fancybox,
$(".ajaxfancybox").fancybox({padding: 0}); but fancybox don't work dynamic added element.
and can't call fancybox element?
i come china. english poor, please forgive me.
the easiest way bind fancybox (v1.3.x) dynamically added elements is:
1: upgrade jquery v1.7.x (if haven't yet)
2: set script using jquery api on() + focusin event.
to make work need find parent element of elements class="ajaxfancybox" per code above (or parent of parent need it) , attach jquery on() example, having html:
<div id="container"> <a class="ajaxfancybox" href="image01.jpg">open image 01</a> <a class="ajaxfancybox" href="image02.jpg">open image 02</a> </div> .. apply on() , focusin event element id="container" (the parent) in example above, like:
$("#container").on("focusin", function(){ $("a.ajaxfancybox").fancybox({ // fancybox api options here 'padding': 0 }); // fancybox }); // on you can apply fancybox option need. additionally may have different scripts different type of content (inside on() method) like:
$("#container").on("focusin", function(){ $("a.ajaxfancybox").fancybox({ // fancybox api options here 'padding': 0 }); // fancybox $("a.iframefancybox").fancybox({ // fancybox api options here 'padding': 0, 'width': 640, 'height': 320, 'type': 'iframe' }); // fancybox }); // on important: example above won't work on chrome. workaround add tabindex attribute of elements bound fancybox like
<div id="container"> <a tabindex="1" class="ajaxfancybox" href="image01.jpg">open image 01</a> <a tabindex="1" class="ajaxfancybox" href="image02.jpg">open image 02</a> </div> that solves issue , work (as far know) in browsers including ie7+.
update: march 07, 2012.
i told method works when add new content page not when replace content of page.
the method works on either of 2 scenarios mentioned above. make sure new replacing content loaded inside container applied .on() method.
the tabindex workaround chrome applies.
Comments
Post a Comment