Flexslider с динамическим контентом. например, изображения и / или видео

0

Я использую Flexslider для одновременного отображения изображений и видео, но я пытаюсь понять, как это сделать, чтобы, если видео нет, чтобы показывать только изображения и наоборот. В настоящее время, если оба присутствуют: изображения и видео работают, но как только вы удаляете видео, ползунок перестает загружаться.

Основной код из их демо:

    // Vimeo API nonsense
    var player = document.getElementById('player_1');
    $f(player).addEvent('ready', ready);

    function addEvent(element, eventName, callback) {
        if (element.addEventListener) {
            element.addEventListener(eventName, callback, false)
        } else {
            element.attachEvent(eventName, callback, false);
        }
    }

    function ready(player_id) {
        var froogaloop = $f(player_id);
        froogaloop.addEvent('play', function(data) {
            $('.flexslider').flexslider("pause");
        });
        froogaloop.addEvent('pause', function(data) {
            $('.flexslider').flexslider("play");
        });
    }
    // Call fitVid before FlexSlider initializes, so the proper initial height can be retrieved.

$(".flexslider")
    .fitVids()
    .flexslider({
      animation: "slide",
      useCSS: false,
      animationLoop: false,
      smoothHeight: true,
      before: function(slider){
        $f(player).api('pause');
      }
  });

а также

<div class="flexslider">
  <ul class="slides">
    <li>
      <iframe id="player_1" src="http://player.vimeo.com/video/39683393?api=1&player_id=player_1" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
    </li>
    <li>
      <img src="slide2.jpg" />
    </li>
    <li>
      <img src="slide3.jpg" />
    </li>
    <li>
      <img src="slide4.jpg" />
    </li>
  </ul>
</div>
  • 0
    Код из чьей-то демонстрации не поможет нам отладить ваш код (если он не совпадает).
  • 0
    да это то же самое. Я как бы спрашиваю, возможно ли это на самом деле. Не могу найти какую-либо документацию на сайте Flexslider.
Показать ещё 2 комментария
Теги:
carousel
flexslider

1 ответ

0
Лучший ответ

Я понял, что следующее:

before: function(slider){
        $f(player).api('pause');
      }

вызывал конфликт, когда видео не было, поэтому я создал двух игроков, которые будут принимать видео и изображения (это исходный код) и второй игрок только для изображений. С помощью:

$(".flexslider-img").flexslider({
      animation: "slide",
      useCSS: false,
      animationLoop: false,
      smoothHeight: true
  });

Затем, когда я использую wordpress, я использовал форматы сообщений для вывода соответствующего кода. например, если сообщение содержит видео, пользователь будет выбирать "Видео" в качестве формата сообщения, для которого используется соответствующий код:

// Vimeo API nonsense
    var player = document.getElementById('player_1');
    $f(player).addEvent('ready', ready);

    function addEvent(element, eventName, callback) {
        if (element.addEventListener) {
            element.addEventListener(eventName, callback, false)
        } else {
            element.attachEvent(eventName, callback, false);
        }
    }

    function ready(player_id) {
        var froogaloop = $f(player_id);
        froogaloop.addEvent('play', function(data) {
            $('.flexslider').flexslider("pause");
        });
        froogaloop.addEvent('pause', function(data) {
            $('.flexslider').flexslider("play");
        });
    }
    // Call fitVid before FlexSlider initializes, so the proper initial height can be retrieved.

$(".flexslider-video")
    .fitVids()
    .flexslider({
      animation: "slide",
      useCSS: false,
      animationLoop: false,
      smoothHeight: true,
      before: function(slider){
        $f(player).api('pause');
      }
  });

Без сомнения, лучший способ сделать это, но это сработало для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню