javascript - 使用 Fotorama api 自定义缩略图和标题

标签 javascript jquery fotorama

我正在使用 Fotorama (www.fotorama.io) Jquery 插件构建一个网站。我一直在使用此代码生成自定义缩略图( jsfiddle ):

 $('.thumbs').each(function () {
  $('a', this).each(function () {
    var $a = $(this);
    // set ids, will use them later
    $a.attr({id: $a.attr('href').replace(/[\/\.-]/g, '')});
  });

  var $thumbs = $(this),
      $fotorama = $thumbs.clone();

  $fotorama
      .on('fotorama:show', function (e, fotorama) {
        // pick the active thumb by id
        $('#' + fotorama.activeFrame.id)
            .addClass('active')
            .siblings()
            .removeClass('active');
      })
      .addClass('fotorama')
      .removeClass('thumbs')
      .insertAfter(this)
      .fotorama({nav: false, width: '100%', maxHeight: 400, ratio: 3/2});

  // get access to the API
  var fotorama = $fotorama.data('fotorama');

  $thumbs.on('click', 'a', function (e) {
    e.preventDefault();
    // show frame by id
    fotorama.show(this.id);
  });
});

这段代码工作得很好,但我还需要自定义标题。我找到了以下代码( jsfiddle ),但我正在努力将这两段代码放在一起。我刚刚学习 Javascript 和 JQuery,可以用一只手将脚本结合起来作为一个整体工作。到目前为止我尝试过的一切都失败了。

$('.fotorama')
  .on('fotorama:show', function (e, fotorama) {    
    fotorama.$caption = fotorama.$caption || $(this).next('.fotorama-caption');
    var activeFrame = fotorama.activeFrame;
    fotorama.$caption.html(
      '<strong>' + activeFrame.title + '</strong><br>'
      + activeFrame.author
    );
  })
  .fotorama();

最佳答案

在伊舍伍德的帮助下解决了。请在这里找到解决方案 http://jsfiddle.net/vCUC2/97/

$('.thumbs').each(function () {
    $('a', this).each(function () {
        var $a = $(this);
        // set ids, will use them later
        $a.attr({
            id: $a.attr('href').replace(/[\/\.-]/g, '')
        });
    });

    var $thumbs = $(this),
        $fotorama = $thumbs.clone();

    $fotorama.on('fotorama:show', function (e, fotorama) {
        // pick the active thumb by id
        $('#' + fotorama.activeFrame.id)
            .addClass('active')
            .siblings()
            .removeClass('active');

        var activeFrame = fotorama.activeFrame;
        fotorama.$caption = fotorama.$caption || $(this).next('.fotorama-caption');
        fotorama.$caption.html(
            'Title: <strong>' + activeFrame.title + '</strong><br>Caption: ' + activeFrame.author);
    })
        .addClass('fotorama')
        .removeClass('thumbs')
        .insertAfter(this)
        .fotorama({
        nav: false,
        width: '100%',
        maxHeight: 400,
        ratio: 3 / 2
    });

    // get access to the API
    var fotorama = $fotorama.data('fotorama');

    $thumbs.on('click', 'a', function (e) {
        e.preventDefault();
        // show frame by id
        fotorama.show(this.id);
    });
});

关于javascript - 使用 Fotorama api 自定义缩略图和标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900154/

相关文章:

javascript - jQuery 选择器规则是否会针对较新的浏览器发生变化?

javascript - 删除一串数字的最后一个字母

javascript - 更新: Querying lists in SharePoint 2013

jquery - bootstrap 是否支持列宽等于零以便在超小屏幕中隐藏网格列?

javascript - 网站在加载时跳转到中间内容。一页设计

javascript - 每次我点击谷歌地图 API 中的位置点时,信息窗口都会显示在同一位置

javascript - 省略 javascript 对象的索引

javascript - 仅在移动 View 上运行 JQuery

javascript - Magento2 图库加载后回调

javascript - fotorama 单击触发缩略图选择