🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
FancyBox

FancyBoxはウェブページ上の画像、HTMLコンテンツ、マルチメディアにズーム機能を加えてくれるツールです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3437閲覧

ajaxで生成した要素に対するfancyboxのオプション設定

aruri

総合スコア16

FancyBox

FancyBoxはウェブページ上の画像、HTMLコンテンツ、マルチメディアにズーム機能を加えてくれるツールです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/05/09 05:43

編集2017/05/09 05:46

###前提・実現したいこと
ajaxで動的に生成した要素に対して、fancyboxを割り当てています。
本来できないらしいのですが、live関数を使うとできるとのことで、
一度liveで設定してから、それ自体にfancyboxを起動させています。
参考: https://2inc.org/blog/2012/03/02/1270/

jQuery('.fancybox').live('click', function() { jQuery.fancybox(this); return false; });

しかし、これだとfancyboxのオプションが設定できないため、
設定できるようにしたいのです。

jQuery('.fancybox').live('click', function() { jQuery(this).fancybox( { // <- 変更 "width": 450, // <- サイズを指定 "height": 200 }); return false; });

とすると、1回目のクリックでは何も起きず、2回目からfancyboxが起動してしまいます。サイズ指定もききません。

同じく https://2inc.org/blog/2012/03/02/1270/ を参考に、

jQuery('.fancybox').live('hover', function() { // 'click' -> 'hover' jQuery(this).fancybox( { "width": 450, "height": 200, }); return false; });

に変更しましたが、fancyboxは一回で起動しますが、サイズ指定がききません。
ajaxで生成した要素に対してのオプション設定は不可能なのでしょうか。

###バージョンなど
jQuery 1.4.2 (理由があり、1.8以下を使用しています。)
fancybox 1.3.1

わかる方いらっしゃいましたら、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下の形でもオプションを指定できます。

jQuery.fancybox(this);

jQuery.fancybox( this, { 'autoDimensions' : false, 'width' : 350, 'height' : 'auto', 'transitionIn' : 'none', 'transitionOut' : 'none' } );

Fancybox - Tips & Tricks

ajax周りであれば、上記の5番も参考になるかと思います。

また、高さ、幅が有効なのはiframe、swfのみのようですが、
どちらになりますか?

投稿2017/05/09 06:41

mri0815

総合スコア429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aruri

2017/05/09 07:21

なるほど、thisをカンマで区切る書き方があったのですね...! こちらのオプションの値をまるっとコピーしてみたところ、動作しました。 ちなみにifameやswfではなく、ページ内のdiv要素をポップアップしています。 (自分で書いたところ動かなかったので、ダブルコーテーションがダメだったのでしょうか) 大変たすかりました、ありがとうございます! jQueryとjavascript、ちゃんと勉強しようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問