1

パラメータの値はcontent、コンテンツを取得する関数である必要があります。私はこのようなものを使用できると思いました:

$(".fancy-detail-page").fancybox({
      'content'    : function(){
          var id = $(this).attr('id');
          id = id.replace("pd", "c");
          var content = $('#' + id + ' .product-details').html();
          return content;
      },
      'padding'    : 0,
      'openEffect'  : 'none',
      'closeEffect'  : 'none',
      'maxWidth'    : 960
 });

しかし、returnうまくいかないようです。これはどのように正しく行われますか?

4

3 に答える 3

1

jqueryrocks とローストに感謝します。この解決策は私のために働いた:

  $(".fancy-detail-page").click(function(e){
    e.preventDefault();
    var id = $(this).attr('id');
    $.fancybox({
      'content'    : (function(){
        id = id.replace("pd", "c");
        var content = $('#' + id + ' .product-details').html();
        return content;
      })(),
      'padding'    : 0,
      'openEffect'  : 'none',
      'closeEffect'  : 'none',
      'maxWidth'    : 960
    });
   });
于 2013-04-17T15:19:20.383 に答える
1

あまり複雑にすることなく、beforeLoadコールバックを使用して同じ結果を得ることができました。

$(".fancy-detail-page").fancybox({
    padding: 0,
    openEffect: 'none',
    closeEffect: 'none',
    maxWidth: 960,
    beforeLoad : function () {
        var id = $(this.element).attr("id").replace("pd", "c");
        this.content = $('#' + id + ' .product-details').html();
    }
});

JSFIDDLE

そしてこの行

this.content = $('#' + id + ' .product-details').html();

これに減らすことができます

this.content = $('#' + id + ' .product-details');

.html()同じ結果を得る 必要はありません...更新されたJSFIDDLEを参照してください

于 2013-04-17T21:31:11.950 に答える
0

これは同じプラグインであると仮定します。

API ごとに、「コンテンツ」はデータである必要があるように見えます。

「コンテンツはコンテンツを強制します(任意のhtmlデータにすることができます)」 http://fancybox.net/api

したがって、fancybox を初期化する前に関数を呼び出す (またはコンテンツ変数を設定する) だけで済みます。

var id = $(this).attr('id');
id = id.replace("pd", "c");
var content = $('#' + id + ' .product-details').html();

$(".fancy-detail-page").fancybox({
      'content'    : content,
      'padding'    : 0,
      'openEffect'  : 'none',
      'closeEffect'  : 'none',
      'maxWidth'    : 960
 });
于 2013-04-17T15:00:57.273 に答える