誰かがフォームを送信しようとしたときに、ファンシーボックスを表示したいのですが。だから私はこれを持っています:
$('#login-form').submit(function(e) {
$.fancybox({
content: '<h2>Hello Fancybox</h2>',
modal: true
});
return false;
});
うまく動作しますが、コンテンツ文字列ですべてのHTMLを指定しようとするよりも、divを使用したいです。これでポップアップしてもいいですか
<div style="display:none" id="access-policy">
blah blah blah
</div>
代わりに?
FancyBox v3以降の場合 この回答を参照してください
古いバージョンの場合:
href
プロパティにdiv IDを設定する必要があります。 content
プロパティで$('#access-policy').show()
を使用すると、このファンシーボックスを2回目に開いたときに何も表示されません。
$('#login-form').submit(function(e) {
$.fancybox({
href: '#access-policy',
modal: true
});
return false;
});
また、HTMLは次のようにする必要があります。
<div style="display:none">
<div id="access-policy">
blah blah blah
</div>
</div>
:)
受け入れられた回答のコードを使用していて、30分頭を悩ませていたからです。
最新のFancyBox 3では、いくつかのオプション名といくつかのメソッドの使用方法が変更されました。
インライン要素を開く方法に関する古いバージョン:
$.fancybox({ // OUTDATED
href: '#element-id',
modal: true
});
に変更する必要があります
$.fancybox.open({ // FancyBox 3
src: '#element-id',
modal: true
});
openメソッドとhref-> srcの変更に注意してください。
開いていない場合、fancyboxは関数エラーではありません。 「src」がないと、要求されたコンテンツをロードできないポップアップが表示されます。
これが誰かが私の同じ間違いを避けるのを助けてくれることを願っています、そして私たちはこれについてのドキュメントに従う必要があります。それは時代遅れになるのがはるかに難しいです。
できるよ:
$('#login-form').submit(function(e) {
$.fancybox({
content: $('#access-policy').show(),
modal: true
});
return false;
});
気にしないで。 content
はjqueryオブジェクトにすることができます:
$('#login-form').submit(function(e) {
$.fancybox({
content: $('#access-policy'),
modal: true
});
return false;
});
ただし、div
は非表示のdivでラップする必要があります。
<div style="display:none"><div id="access-policy">
blah blah blah
</div></div>
そうでなければ何も表示されません。表示プロパティは変更されません。
コンテンツは「任意のHTML」なので、DivからHTMLを取得してコンテンツに渡します
content: $('#access-policy').html(),
これは、<a href>
リンク要素を必要とせずにfancyboxを使用する方法を示しています。
インライン(1.3.4):
<div id="menuitem" class="menuitem"></div>
<div style="display:none;">
<div id="dialogContent">
</div>
</div>
$('#menuitem').click(function() {
$.fancybox({
'type': 'inline',
'content': '#dialogContent'
});
});
インライン(2.1.5):
<div id="menuitem" class="menuitem"></div>
<div style="display:none;">
<div id="dialogContent">
</div>
</div>
$('#menuitem').click(function() {
$.fancybox({
'type': 'inline',
'href': '#dialogContent'
});
});
Iframe:
<div id="menuitem" class="menuitem"></div>
$('#menuitem').click(function () {
$.fancybox({
type: 'iframe',
href: 'http://www.abc123.com'
});
});