我的网站上有一个日历,它使用 ajax 在不同的月份和年份之间切换。日历显示相应日期的事件标题,当用户将鼠标悬停在标题上时,应弹出一个灯箱,提供更多信息。
我已经完成了这一切,直到用户使用我提供的按钮更改月份或年份。在那之后,fancybox 似乎没有应用于新元素。
我知道这是因为元素是在最初的 fancybox 定义之后添加到 dom 的,并且已经使用类似于以下的代码来处理它:
$('.date').live('focusin', function() {
var $this = $(this);
if(!$this.is(':data(datepicker)')) {
$this.datepicker();
}
});
这与 jQuery UI 的 datepicker 结合使用。
我试图用这个复制这段代码:
$('div#calendar').live('mouseover', function() {
$("a.event_link").fancybox({
'width' : 610,
'height' : 347,
'autoScale' : false,
'overlayOpacity' : 0.8,
'overlayColor' : '#000',
'type' : 'iframe',
'padding' : '5px',
'margin' : '5px',
'transitionIn' : 'elastic',
'transitionOut' : 'elastic'
});
$('a.event_link').live('mouseover', function() {
$(this).trigger('click');
});
});
使用此代码,当页面首次加载时它仍然可以正常运行,但是一旦用户更改月份或年份,则什么也不会发生。
我已经尝试了很多变体,例如将它放在一个函数中并在结束之前添加一个 setTimeout() ,但我仍然得到相同的行为。
我看到功能代码和非功能代码之间唯一不同的是 $this 的使用,是否有可能我不能将fancybox 广泛分配给这个庄园的多个元素?
如果有人有任何想法,将不胜感激。