0

ファンシーボックスに追加のボタンを作成したい(画像の境界線を閉じる)。beforeShow()andメソッドを使用しようとしましたが、 orafterShow()内で呼び出すと、javascript エラーが発生します。これらの変数は未定義です。this.contentthis.inner

他には、各 A 要素の他の属性を取得する必要があります。だから私が呼び出すとthis.rel、またはthis.alt未定義のエラーが再び発生しました。

私の問題の解決策を見つける方法について、いくつかのアイデアはありますか?

4

1 に答える 1

0

次のようなコールバックを使用して、コンテナに新しいhtmlを追加してみることができます。.fancybox-wrapafterShow

afterShow : function(){
 var myContent = '<div id="myContent">{my html content here}</div>'; 
 $(".fancybox-wrap").append(myContent);
}

CSSボックス内に新しいコンテンツを(絶対に)配置するために使用します

それを削除することも良い考えafterCloseです。そうしないと、次に fancybox を開いたときに再度追加されます。

afterClose: function(){
 $(".fancybox-wrap #myContent").remove();
}

一方、fancybox を起動したセレクターから他の属性を取得するには、次の$(this.element)ようなコールバック関数内で使用します。

beforeShow: function(){
 var thisAlt = $(this.element).attr("alt");
 var thisRel = $(this.element).attr("rel");
}

data-*次のような HTML5 属性を使用することもできます

<a class="fancybox" data-width="500" data-height="320" ....

のような値を取得します

var thisWidth = $(this.element).data("width");
var thisHeight = $(this.element).data("height");

または、次のような値を使用して、新しいサイズを fancybox に直接割り当てます

afterShow: function(){
   this.width = $(this.element).data("width");
   this.height = $(this.element).data("height");
}

: この情報はすべて fancybox v2.x に適用されます。それだけ。

于 2012-05-30T17:29:42.883 に答える