2012-09-13 9 views
7

これは私の質問です。ここに私のコード例があります。Fancyboxミュートクリックイベントはありますか?

HTML:

<a class="fancybox" rel="group" href="img1.jpg"> <img src="img1_thumb.jpg"> </a> 
<a class="fancybox" rel="group" href="img2.jpg"> <img src="img2_thumb.jpg"> </a> 

JS:

var header = '<img id="w" src="logo.gif">'; 

$('.fancybox').fancybox({ 
    afterLoad: function() { 
     this.wrap.prepend(header); 
    }, // afterLoad 
}); //fancybox 

$('#w').click(function() {console.log('clicked');}); 

あなたがFancyBoxを起動するサムネイルをクリックすると、afterLoadがヘッダーにドロップされますが、あなたは画像をクリックして、コンソールを監視あなたは何も得られない。

思考?私はFancyBoxの$.fancybox.close()メソッドを使用しようとしていますが、私がクリックイベントを発生させることができない場合は、インラインを使用することを余儀なくされます。これはJSインラインを使用しないためです。

答えて

2

.on()または同等のものを使用して、afterLoadコールバックで動的にバインドまたはバインドする必要があります。これはFancyboxとは関係がありません。あなたは、DOMにまだ存在しないものと一致するjQueryセレクタを使用してバインドしています。代わりに、メモリ内の要素に直接バインドすることもできますが、DOMバインディングを最初に扱うことで快適になるはずです。

+0

ヘッダーを追加した後、 'afterLoad'関数で' $( '#w')。on( 'click'、function(){$。fancybox.close()}) –

+0

それはそれをしました!本当にありがとう。 –

+0

ちょうど私が '$ .fancybox.close()'関数を 'afterLoad'コールバックに追加するのは最適ではないと思っていました。次の画像にスクロールすると、 'new'ヘッダーはイベントを処理しません。 クリックハンドラを 'afterShow'コールバックに移動して修正しました。 –

関連する問題