【问题标题】:Replace img with iframe on click of button单击按钮将 img 替换为 iframe
【发布时间】:2013-04-29 00:28:59
【问题描述】:

我对 js/jquery 还很陌生,需要更多知识渊博的人的帮助!

我在这个网站和网络上都看得很清楚,但我自己却找不到答案。我自己玩过,但我的知识有限,我就是不知道下一步该做什么。

我有什么

我有一个 img,当点击它时,它会被 iframe(youtube 视频)替换,就像一个占位符/海报,并且与我最初在这里找到的以下代码完美配合:How to add a splash screen/placeholder image for a YouTube video

<div class="playbutton"></div>    
<img src="image.jpg" data-video="http://www.youtube.com/videolink">
        <script>
                $('img').click(function(){
            var video = '<div class="video-container"><iframe src="'+ $(this).attr('data-video') +'"></iframe></div>';
            $(this).replaceWith(video);
        });
        </script>

正如我所说的 - 当点击图像时它完美地工作它替换为视频。

问题

我现在添加了一个播放按钮(目前是div,但我可以使用img)浮动在img 上方。如果我点击播放按钮,什么也不会发生(显然与脚本无关)。

我希望这个播放按钮“触发”将img 替换为iframe,但我不知道要在脚本中添加什么来实现这一点。

我在寻找什么

我正在寻找播放按钮作为点击时的“触发器”,或者理想情况下将 both 播放按钮和 img 作为“触发器”,这样如果用户点击它就可以工作在图像上,而不仅仅是播放按钮。

虽然我有你...

如果将关闭按钮添加到组合中并单击,我是否也可以再次将iframe 替换为img

任何帮助将不胜感激!

戴尔

【问题讨论】:

  • 嗨 Dale,你能在 jsfiddle 上做一个例子吗?它使帮助您变得更加容易。
  • 我之前没有使用过 jsfiddle,所以我希望它的所有内容都是正确的:jsfiddle.net/ANRHT/2
  • 是的,除了你必须放在js部分的js之外,我已经做了一个正确的,包括你的问题的解决方案,检查答案;)
  • 您可以使用Codegena iframe generator tool 生成在图片点击时加载的 iframe

标签: javascript jquery html css youtube


【解决方案1】:

这将满足您的所有需求,包括关闭按钮: 这是工作小提琴: http://jsfiddle.net/ANRHT/6/

js:

 $('.playbutton,img').click(function(){
   var video = '<div class="video-container"><iframe src="'+$('img').attr('data-video') +'"></iframe></div>';
   $('.video').hide();
   $('.tube').html(video);
   $('.close').show();
 });
 $('.close').click(function(){
   $('.video').show();
   $('.tube').empty();
   $('.close').hide();
 });

HTML:

<div class="video">
  <div class="playbutton">Play</div>    
  <img src="http://cdn0.sbnation.com/uploads/chorus_image/image/5372321/battlefield3-screen-12.0_cinema_640.0.jpeg" data-video="http://www.youtube-nocookie.com/embed/U8HVQXkeU8U?&autoplay=1&rel=0&fs=0&showinfo=0&autohide=3&modestbranding=1">
</div>
<div class="tube"></div>
<div class="close">Close X</div>

【讨论】:

  • 谢谢 - 我确实警告过你我之前没有使用过 jsfiddle :) 我在这里玩过一点:jsfiddle.net/ANRHT/7 添加一些图像,这在 jsfiddle 上运行完美,但我有将所有内容添加到我的网站中,点击时 iframe 正在加载 404 页面,而不是来自 data-video 的视频...我会继续播放
  • 很高兴它有帮助,js fiddle 让你更容易解释你的问题并让其他人解决它,所以你会更快地解决你的问题,无论如何,请接受答案如果您认为它完全涵盖了您的问题。
  • @Dale1985 很好,如果您愿意,我可以在您的网站上查找问题。
  • 感谢您的帮助,我可以澄清一下js应该添加到标题中还是其他人?我只是想弄清楚为什么 iframe 显示的是 404 页面而不是视频。它在 jsfiddle 中完美运行,因此它是我网站上某处的标记。
  • @Dale1985 是的,您可以将 js 放入标头中的 标记中,但如果您将 img 替换为 iframe,我会亲自从外部 js 文件中加载它就是说js在工作了,试着找到iframe的位置,看看是不是你在data-video里设置的,发个链接在这里,我会告诉你问题出在哪里。
【解决方案2】:
$("#play-button").on('click', function () {
    //this fires the same click event from your code.
    $("img").trigger('click');
});
$("#close-button").on('click', function () {
    $("iframe").replaceWith("<img src='image.jpg'>");
});

【讨论】:

  • @AndersLindén 这不会有任何区别。事实上,&gt; 甚至都不需要。
  • 这不是 jQuery 假定的一种做法吗?
  • @AndersLindén 你是什么意思?
  • 使用 jQuery 创建新元素的首选方式是始终关闭它们?
  • @AndersLindén 可能,但&gt;/&gt; 一样封闭,无论如何&lt;img&gt;
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 2021-11-12
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
相关资源
最近更新 更多