jQuery Fancyboxでbindイベントもモーダルする方法 ITかあさん

ITかあさん

jQuery Fancyboxでbindイベントもモーダルする方法

jQuery Fancyboxでbindイベントもモーダルする方法


jQueryでappend()やhtml()で追加や変更された要素に対して、さらにclickイベントを入れたい場合はclick()では発動しないですよね、javascriptで追加された要素に対してさらにイベントを入れてあげるにはon()イベントを使って上げますね。

1.9以前ではliveイベントがありましたが、以降は廃止され、onイベントを使います。詳しくはこちら

jQuery Fancyboxでもbindしたいよー!

appendやhtmlなど、追加・変更した要素に対してもFancyboxプラグインでモーダル表示させたいなーと思っていたら、同じようなこと試されている方がいらっしゃいました。

$(document).on('click', 'a.fancybox', function() {
$.fancybox(this);
});

こうすれば最低限のモーダルは動くことが分かりましたが、Fancyboxはオプションが超たくさんあるんですね。

例えば、Fancyboxでモーダルの表示が完了した時に何か処理を入れる

$(".js-modal").fancybox({
onComplete: function() {
alert('hoge');
}
});

onイベントで、このモーダルの表示が完了したらどうするのかが分かりませんでしたが、公式サイトを見たり、試行錯誤で出来ました!

$(document).on('click', '.js-modal', function () {
$.fancybox({
'href' : this.href,
'onComplete' : function() {
alert('hoge');
}
});
return false;
});
});

これでOK!最終的には公式サイトで解決!最初からドキュメント読めやってことですね。hrefにはthis.hrefというのもポイントですね。

初夏のJavaScript祭 in サーキュレーションビル ForPro