私のウェブサイトには、ajaxを使用して異なる月と年を切り替えるカレンダーがあります。カレンダーには、それぞれの日のイベントタイトルが表示され、ユーザーがタイトルにマウスを合わせると、ライトボックスがポップアップ表示され、詳細情報が表示されます。
ユーザーが提供したボタンで月または年を変更するまで、これはすべて機能しています。その後、fancyboxは新しい要素に適用されていないようです。
これは、最初のfancybox定義の後に要素がdomに追加され、次のようなコードで処理されたためです。
$('.date').live('focusin', function() {
var $this = $(this);
if(!$this.is(':data(datepicker)')) {
$this.datepicker();
}
});
これは、jQueryUIの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を幅広く割り当てることができない可能性はありますか?
何かアイデアがありましたら、よろしくお願いします。