Функция загрузки на .click - PullRequest
       19

Функция загрузки на .click

0 голосов
/ 08 сентября 2018

У меня проблема с тем, чтобы понять, куда мне нужно поместить resizeBg();, чтобы это работало. Например, когда пользователь нажимает кнопку (btnNext), он вызывает loadVideo, а по событию, готовому к работе, resizeBg() необходимо вызвать снова. Но консоль не показывает мне ничего

И пример кода:

var instance = Plyr.setup('.js-player', {
        controls: [],
        loop: { active: true },
        debug: false,
        autoplay: true,
        clickToPlay: false
    });
    var player = instance[0],
    index = 0,
    videoCount = video_list.length;
    player.source = {
        type: 'video',
        sources: [
          {
            src: video_list[index].src,
            provider: 'vimeo',
          }
        ]
    },
    video_title = $('.video-title').text(video_list[index].title),
    player.on('ready', function () {
        player.volume = 0;
        resizeBg();
    },
    btnPrev = $('.home-video-direction .prev').click(function (event) {
        event.preventDefault();
        if ((index - 1) > -1) {
            index--;
            loadVideo(index);
        } else {
            index = videoCount - 1;
            loadVideo(index);
        }
    }),
    btnNext = $('.home-video-direction .next').click(function (event) {
        event.preventDefault();
        if ((index + 1) < videoCount) {
            index++;
            loadVideo(index);
        } else {
            index = 0;
            loadVideo(index);
        }

    }),
    loadVideo = function (id) {
        player.source = {
            type: 'video',
            sources: [
              {
                src: video_list[id].src,
                provider: 'vimeo',
              }
            ]
        },
        video_title = $('.video-title').text(video_list[id].title),
        index = id;
        Plyr.setup();
        player.on('ready', function () {
            player.volume = 0;
            resizeBg();
        })
    });

}

var theWindow        = $(window),
    $bg              = $(".video-intro .plyr__video-wrapper"),
    aspectRatio      = 1.77777777778;

function resizeBg() {
    var w_H = theWindow.height(),
            w_W = theWindow.width(),
            sum = w_W / w_H;
    if ( (w_W / w_H) < aspectRatio ) {
        $bg
            .removeClass('bgwidth')
            .addClass('bgheight')
            .css({
                    width: (w_H * aspectRatio),
                    left: (w_W - (w_H * aspectRatio)) / 2
                });
    } else {
        $bg.removeClass('bgheight').addClass('bgwidth');
    }



theWindow.resize(resizeBg).trigger("resize");

1 Ответ

0 голосов
/ 12 сентября 2018

Я нашел ошибку, которую сделал. В основном это DOM. Я поставил эти переменные из function

var theWindow        = $(window),
    $bg              = $(".video-intro .plyr__video-wrapper"),
    aspectRatio      = 1.77777777778;

Потому что они прикреплены к элементу prev DOM. $bg существует, но это не было точкой для нового элемента DOM, который плагин добавил после загрузки видеоданных на .click

Так что эта функция должна выглядеть следующим образом

function resizeBg() {
        var theWindow        = $(window),
            $bg              = $(".video-intro .plyr__video-wrapper"),
            aspectRatio      = 1.77777777778,
            w_H = theWindow.height(),
            w_W = theWindow.width(),
            sum = w_W / w_H;

        if ( (w_W / w_H) < aspectRatio ) {
            $bg
                .removeClass('bgwidth')
                .addClass('bgheight')
                .css({
                        width: (w_H * aspectRatio),
                        left: (w_W - (w_H * aspectRatio)) / 2
                    });
        } else {
            $bg.removeClass('bgheight').addClass('bgwidth');
        }
...