0

我正在尝试在 flickity 的活动实例中定位 iframe,因为我可能在单个页面上有多个 flickity 实例(最终目标是刷新用户选择另一张幻灯片后刚刚查看的幻灯片中的 iframe )。

我让它适用于单个幻灯片,但是当我在页面上有多个幻灯片时遇到问题,因为它会刷新之前选择的所有 iframe,而不仅仅是活动幻灯片中的那个。

下面是我的脚本,其中“.slideshow”是一个轻弹实例,我希望能够在一个页面上有多个。该问题与定位正确的“previousVideoContainer”有关,其父级刚刚触发了“settle.flickity”事件。有任何想法吗?

$('.slideshow').each(function(index, element) {
    // in case the first slide is a video
    var previousVideoContainer = $(this).find('.slideshow-cell.is-selected iframe'); 

    $(this).on('settle.flickity', function () {
        //reload iframe in previously viewed slide to "stop" the video
        $(previousVideoContainer).each(function(ev) {
            var video = this;
            $($(video),parent.document).attr('src',$($(video),parent.document).attr('data-src'));
        }); 
        var videoContainer = $('.carousel-cell.is-selected iframe');
        previousVideoContainer = videoContainer;
    });
});
4

1 回答 1

1

我回答了我自己的问题。问题是我没有像使用previousVideoContainer 那样设置“videoContainer”变量的范围。Flickity 工作得很好。这是修改后的代码:

$('.slideshow').each(function(index, element) {
    // in case the first slide is a video
    var previousVideoContainer = $(this).find('.slideshow-cell.is-selected iframe'); 

    $(this).on('settle.flickity', function () {
        //reload iframe in previously viewed slide to "stop" the video
        $(previousVideoContainer).each(function(ev) {
            var video = this;
            $($(video),parent.document).attr('src',$($(video),parent.document).attr('data-src'));
        }); 
        var videoContainer = $(this).find('.slideshow-cell.is-selected iframe');
        previousVideoContainer = videoContainer;
    });
});
于 2017-02-15T19:05:25.627 回答