我有一个情况,即我不能修改HTML代码为锚标记,用“HREF”属性除外。 因此,添加类的定位标记不是一个选项。
HTML标记如下:
<a href="http://www.youtube.com/watch?v=#########&autoplay=1"></a>
本和其他链路之间进行区分,我已经添加基于“href”属性的jQuery代码的选择器。
代码如下:
(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的,因此为什么我在顶部添加部分,以使以“$”。
我不能在控制台中看到任何错误,页面仅导航直没有JavaScript的干预YouTube页面。
adding a class to the anchor tag is not an option
既然你可以随时通过jQuery添加类不一定是真正喜欢
$('a[href*="youtube"]').addClass("fancybox")
总之,我个人不喜欢用swf
模式的YouTube视频更多,但iframe
模式; 这使得它们更容易处理和跨平台兼容(包括iOS)
我会做的是,用.each()
方法:
- 每一个转换
href
到embed
使用javascript格式.replace()
- 结合各锚的fancybox
- 设置新的转换
href
使用的fancybox href
API选项
这是两个的fancybox V1.3.4或V2.X工作的代码:
(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 + "&wmode=opaque"
}); // fancybox
}); // each
}); // ready
})(jQuery);
请注意 ,我说wmode=opaque
,否则关闭按钮将成为YouTube视频的后面。
见的jsfiddle与1.3.4版本...或者的jsfiddle与v2.1.4
你已经错过了doc ready
关闭内部处理程序,并没有必要为e.preventDefault()
(function ($) {
$(function(){
$('a[href*="youtube"]').fancybox({
'padding' : 0,
'type' : 'swf',
'href' : this.href.replace(/watch?v=/gi, 'v/'),
'swf' : { 'wmode' : 'transparent', 'allowfullscreen' : 'true' }
});
});
})(jQuery);