Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery FancyBox YouTube视频不工作_Javascript_Jquery_Youtube_Fancybox_Fancybox 2 - Fatal编程技术网

Javascript jQuery FancyBox YouTube视频不工作

Javascript jQuery FancyBox YouTube视频不工作,javascript,jquery,youtube,fancybox,fancybox-2,Javascript,Jquery,Youtube,Fancybox,Fancybox 2,我有一种情况,除了'href'属性外,我无法修改锚定标记的HTML代码。因此,向锚定标记添加类不是一个选项 HTML标记如下所示: <a href="http://www.youtube.com/watch?v=#########&amp;autoplay=1"></a> (function ($) { $('a[href*="youtube"]').fancybox({ 'padding' : 0, 't

我有一种情况,除了'href'属性外,我无法修改锚定标记的HTML代码。因此,向锚定标记添加类不是一个选项

HTML标记如下所示:

<a href="http://www.youtube.com/watch?v=#########&amp;autoplay=1"></a>
(function ($) { 

  $('a[href*="youtube"]').fancybox({
            'padding' : 0,
            'type' : 'swf',
            'href' : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
            'swf' : { 'wmode' : 'transparent', 'allowfullscreen' : 'true' }
            });
e.preventDefault();

})(jQuery);
这似乎根本不起作用。谁能告诉我哪里出了问题?我使用的是Drupal,因此我在顶部添加了部件以启用“$”


我在控制台中看不到任何错误,页面直接导航到YouTube页面,没有JavaScript干预。

您错过了闭包中的
doc ready
处理程序,并且不需要
e.preventDefault()

这不一定是真的,因为您总是可以通过jQuery添加类,比如

$('a[href*="youtube"]').addClass("fancybox")
无论如何,我个人不喜欢在youtube视频中使用
swf
模式,只喜欢
iframe
模式;这使得它们更易于处理,并且跨平台兼容(包括iOS)

我要做的是,使用
.each()
方法:

  • 使用javascript
    .replace()
  • 将每个锚点绑定到fancybox
  • 使用fancybox
    href
    API选项设置新转换的
    href
这是适用于fancybox v1.3.4或v2.x的代码:

注意我添加了
wmode=opaque
,否则关闭按钮将位于youtube视频后面


请参见1.3.4版的。。。或者使用v2.1.4,谢谢您的帮助。但是,我现在在控制台中遇到以下错误:uncaughttypeerror:无法调用undefined的方法“replace”。
adding a class to the anchor tag is not an option
$('a[href*="youtube"]').addClass("fancybox")
(function ($) {
  $(document).ready(function(){
    $('a[href*=youtube]').each(function () {
        // convert youtube swf href to embed for iframe
        var thisHref =  this.href
                       .replace(new RegExp("watch\\?v=", "i"), 'embed/')
                       .replace(new RegExp("&", "i"), '?');
        // bind fancybox to each anchor
        $(this).fancybox({
            "padding" : 0,
            "type" : "iframe",
            // add trailing parameters to href (wmode)
            "href" : thisHref + "&amp;wmode=opaque"
        }); // fancybox
    }); // each
  }); // ready
})(jQuery);