【问题标题】:How to perform jquery each function on ajax loaded content?如何对ajax加载的内容执行jquery每个功能?
【发布时间】:2021-05-11 19:33:47
【问题描述】:

我正在尝试向使用 jQuery 的旧网站添加一些代码。代码的目的是将自动播放、循环和静音变量添加到 Vimeo iframe 的 src(当视频旨在像动画 gif 一样显示时)。我已经在另一个网站上成功实现了这一点,但是我在这个网站上遇到的问题是页面加载了 ajax,所以我无法定位 iframe,因为它们最初不存在于页面上。

代码如下:

function vimeo_funtimes() {
    $('iframe').each(function( index ) {
        var vimeosrc = $(this).attr('src') + '?background=1&autoplay=1&loop=1&muted=1';
        $(this).attr('src', vimeosrc);
    }); 
}

然后在加载ajax内容后调用该函数。

我发现很多帖子都指出,当这是一个点击事件时,它需要被委托。但是,这不是点击事件,它应该只是在内容加载后发生,所以我不确定是否可以这样做。

上面的例子是现场直播:isaidicanshout.com

如您所见,所有视频都没有附加自动播放代码。

【问题讨论】:

  • 帧加载成功后是否调用vimeo_funtimes()?如果没有,为什么不在加载 iFrame 之前添加参数?我们需要看起来更多的代码和一个对象示例
  • 如果在加载时完成,只需包裹$(function() { .... })

标签: jquery iframe each


【解决方案1】:

这是一个触手可及的时刻,但我能够通过添加一个 setTimeout 来解决这个问题,这样该函数在页面加载之前不会尝试修改视频。

function vimeo_funtimes() {
    setTimeout( function() {
        $('iframe').each(function( index ) {
            var vimeosrc = $(this).attr('src') + '?background=1&autoplay=1&loop=1&muted=1';
            $(this).attr('src', vimeosrc);
        }); 
    }, 500 )
}

【讨论】:

  • 通常是这样$(function() { $('iframe').each(function( index ) { var vimeosrc = $(this).attr('src') + '?background=1&autoplay=1&loop=1&muted=1'; $(this).attr('src', vimeosrc); }); })
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多