jquery - 单击视频外部时,如何使 YouTube 视频停止播放?

标签 jquery html css iframe youtube

当在横幅中单击图像时,我会出现一个 YouTube 视频模式。 YouTube 视频设置为自动播放,但是点击视频外部时如何让 YouTube 视频停止播放?

HTML 代码

<div class="banner-image">
  <div class="banner-image-container">
    <div class="image"><a href="#media-popup" data-media="//www.youtube.com/embed/qfGggAGITwg?rel=0&autoplay=1"><img src="/files/theme/images/hover.png"/></a></div>
    <div class="popup" id="media-popup">
      <div class="video-container">
        <div class='embed-container'>
          <iframe id="player" frameborder='0' allowfullscreen></iframe>
        </div>
      </div>
    </div>
  </div>
</div>

CSS 代码

.banner-image {
    height:100%;
}

.popup {
    position:absolute;
    z-index:9;
    top:0;
    left:0;
    padding-top:100px;
    width:100%;
    height:100%;
    background:rgba(0,0,0,0.7);
    opacity:0;
    visibility:hidden;
    transition:.3s ease;
}

.show-popup .popup {
    opacity:1;
    visibility: visible;    
}

jQuery 代码

jQuery(function($) {
$("[data-media]").on("click", function(e) {
    e.preventDefault();
    var $this = $(this);
    var videoUrl = $this.attr("data-media");
    var popup = $this.attr("href");
    var $popupIframe = $(popup).find("iframe");

    $popupIframe.attr("src", videoUrl);

    $this.closest(".banner-image").addClass("show-popup");
});

$(".popup").on("click", function(e) {
    e.preventDefault();
    e.stopPropagation();

    $(".banner-image").removeClass("show-popup");
});

$(".popup > iframe").on("click", function(e) {
    e.stopPropagation();
});

});

最佳答案

给您一个解决方案 https://jsfiddle.net/9skjg5Lg/

jQuery(function($) {
  $("[data-media]").on("click", function(e) {
      e.preventDefault();
      var $this = $(this);
      var videoUrl = $this.attr("data-media");
      var popup = $this.attr("href");
      var $popupIframe = $(popup).find("iframe");

      $popupIframe.attr("src", videoUrl);

      $this.closest(".banner-image").addClass("show-popup");
  });

  $(".popup").on("click", function(e) {
      e.preventDefault();
      e.stopPropagation();
      var src = $(this).find('iframe').attr('src').replace('autoplay=1', 'autoplay=0');
      $(this).find('iframe').attr('src', src);
      //$(".banner-image").removeClass("show-popup");
  });

  $(".popup > iframe").on("click", function(e) {
      e.stopPropagation();
  });

});
.banner-image {
    height:100%;
}

.popup {
    position:absolute;
    z-index:9;
    top:0;
    left:0;
    padding-top:100px;
    width:100%;
    height:100%;
    background:rgba(0,0,0,0.7);
    opacity:0;
    visibility:hidden;
    transition:.3s ease;
}

.show-popup .popup {
    opacity:1;
    visibility: visible;    
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="banner-image">
  <div class="banner-image-container">
    <div class="image"><a href="#media-popup" data-media="https://www.youtube.com/embed/qfGggAGITwg?rel=0&autoplay=1"><img src="http://via.placeholder.com/350x150"/></a></div>
    <div class="popup" id="media-popup">
      <div class="video-container">
        <div class='embed-container'>
          <iframe id="player" frameborder='0' allowfullscreen></iframe>
        </div>
      </div>
    </div>
  </div>
</div>

autoplay=1 替换为 autoplay=0 以停止视频。我在 .popup 单击事件中附加了相同的内容。

希望对您有所帮助。

关于jquery - 单击视频外部时,如何使 YouTube 视频停止播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284084/

相关文章:

html - 无缝音频循环到任意位置

出现 CSS 未知边距/填充

javascript - 为点击的链接赋予不同的颜色,并在点击其他链接时恢复其颜色

javascript - 从我的 JavaScript 函数返回数据

jQuery:如果在复选框数组中选择了任何复选框,如何返回 true?

javascript - 刷新 append 元素而不重新加载整个页面

javascript - 如何使用 CSS 或 JS 使图像变暗以保持透明度不变?

html - 在使用透明 Sprite 时给 A#Logo 一个背景颜色?

html - 如何从 CSS 样式中排除具有填充属性的 SVG

jquery - 根据单元格值更改行背景颜色 DataTable