将 EasyFancybox Wordpress 插件与无限滚动一起使用
试图弄清楚当新内容以无限滚动加载时如何重新初始化 Easy FancyBox。我尝试了 $.fancybox.init()
,但这似乎还不够。在头部部分,调用 easy fancybox 的脚本是:
jQuery(document).ready(function($){
var fb_timeout = null;
var fb_opts = { 'overlayShow' : true, 'centerOnScroll' : true, 'showCloseButton' : true, 'showNavArrows' : true, 'onCleanup' : function() { if(fb_timeout) { window.clearTimeout(fb_timeout); fb_timeout = null; } } };
/* IMG */
var fb_IMG_select = 'a[href$=".jpg"]:not(.nofancybox),a[href$=".JPG"]:not(.nofancybox),a[href$=".gif"]:not(.nofancybox),a[href$=".GIF"]:not(.nofancybox),a[href$=".png"]:not(.nofancybox),a[href$=".PNG"]:not(.nofancybox)';
$(fb_IMG_select).addClass('fancybox').attr('rel', 'gallery');
$('a.fancybox, area.fancybox').fancybox( $.extend({}, fb_opts, { 'transitionIn' : 'elastic', 'easingIn' : 'easeOutBack', 'transitionOut' : 'elastic', 'easingOut' : 'easeInBack', 'opacity' : false, 'titleShow' : true, 'titlePosition' : 'over', 'titleFromAlt' : true }) );
/* Auto-click */
$('#fancybox-auto').trigger('click');
});
/* ]]> */
有什么想法可以重新初始化这样的东西,专门绑定到加载到 #content div.post 的新内容吗?感谢您的帮助。
Trying to figure out how to reinitialize Easy FancyBox when new content is loaded in with infinite scroll. I tried $.fancybox.init()
, but this doesn't seem to be enough. In the head section the script that calls easy fancybox is:
jQuery(document).ready(function($){
var fb_timeout = null;
var fb_opts = { 'overlayShow' : true, 'centerOnScroll' : true, 'showCloseButton' : true, 'showNavArrows' : true, 'onCleanup' : function() { if(fb_timeout) { window.clearTimeout(fb_timeout); fb_timeout = null; } } };
/* IMG */
var fb_IMG_select = 'a[href$=".jpg"]:not(.nofancybox),a[href$=".JPG"]:not(.nofancybox),a[href$=".gif"]:not(.nofancybox),a[href$=".GIF"]:not(.nofancybox),a[href$=".png"]:not(.nofancybox),a[href$=".PNG"]:not(.nofancybox)';
$(fb_IMG_select).addClass('fancybox').attr('rel', 'gallery');
$('a.fancybox, area.fancybox').fancybox( $.extend({}, fb_opts, { 'transitionIn' : 'elastic', 'easingIn' : 'easeOutBack', 'transitionOut' : 'elastic', 'easingOut' : 'easeInBack', 'opacity' : false, 'titleShow' : true, 'titlePosition' : 'over', 'titleFromAlt' : true }) );
/* Auto-click */
$('#fancybox-auto').trigger('click');
});
/* ]]> */
Any Ideas how I can reinitialize something like this, bound specifically to new content loaded into #content div.post? Thank you for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
检查此帖子,它可能会有所帮助(EasyFancybox 使用 fancybox v1.3.4 )
更新:我刚刚记得参考线索(上面)适用于单个新添加的元素,但不适用于画廊。如果您有一组画廊(使用
rel
属性),那么您可能更愿意升级到 jQuery 1.7+(如果还没有)并使用jQuery on()
而不是delegate()
,这将允许您初始化现有的和动态添加的元素。我在此处制作了一个示例页面,展示了如何使用 < code>jQuery on() 解决动态添加元素的问题和fancybox (v1.3.x),如果你想看一下。
根据示例页面,我想在您的具体情况下,您可以尝试这样调整代码:
当然,需要 jQuery 1.7+。
Check this thread, it may help (EasyFancybox uses fancybox v1.3.4)
Update: I just recalled that the thread of reference (above) will work for single new added elements, but not for galleries. If you have a set of galleries (using the
rel
attribute) then you may prefer to upgrade to jQuery 1.7+ (if not yet) and usejQuery on()
instead ofdelegate()
, that will allow you to initialize your existing and dynamically added elements.I made an example page here that shows how to use
jQuery on()
to solve the issue of dynamically added elements and fancybox (v1.3.x), if you want to have a look.Based on the example page, I guess in your specific case, you may try tweaking your code this way:
Of course, jQuery 1.7+ is required.