我正在使用fancybox(
http://fancybox.net)弹出一个iFrame.为了做到这一点,我创建了一个类设置为“item_pop”的链接,如下所示:
<div id="events"> <a href="http://www.example.com" class="item_pop">My Link</a> </div>
然后我在页脚中有一些支持这个的JavaScript:
jQuery(".item_pop").fancybox({ 'width' : 900,'height' : 500,'autoDimensions' : true,'autoScale' : true,'transitionIn' : 'elastic','titleShow' : false,'transitionOut' : 'elastic','centerOnScroll' : true,'type' : 'iframe' });
好吧,所以这一切都在游泳.问题是我使用jQuery动态创建这样的附加链接,如下所示:
jQuery(document).ready(function(){ update_seconds = 20; update_duration = update_seconds * 1000; window.setInterval(reload_events,update_duration); }); function reload_events() { jQuery.post("http://www.example.com",{type:'any'},function(data){ var events = eval(data); var html = ''; for(var i=0; i<events.length; i++){ var evt = events[i]; html += '<a href="http://www.example.com" class="item_pop">My Link</a>'; } jQuery('#events').children().remove(); jQuery('#events').append(html); }); }
这实际上显示了指向屏幕的链接,但是当您点击它们时,它们不会弹出iFrame.相反,他们将目标页面打开为新页面,而不是作为现有页面内的iFrame.
有任何想法吗?干杯
解决方法
发生的事情是jQuery(“.item_pop”)找到当时与选择器匹配的元素并绑定到那些元素.由于您以后要创建新元素,因此需要绑定它们.
通话结束后:
jQuery('#events').append(html);
jQuery("#events .item_pop").fancybox({ ... });
或者(效率较低)您可以使用.livequery()
plugin,如下所示:
jQuery(".item_pop").livequery(function() { jQuery(this).fancybox({ 'width' : 900,'type' : 'iframe' }); });