我很难调用fancybox。业余问题。当我尝试使用fancybox iframe打开视频时,下面的代码运行良好,但最后的代码没有。我该怎么修?
<a href="javascript:;" data-href="MBHD0790-03" class="iframe" ">WORKS</a>
$(".iframe").fancybox({
'width': 720,
'height': 410,
'type': 'iframe',
'autoScale': false,
'autoSize': false,
'autoDimensions': false,
'padding': 0,
'beforeLoad' : function(){
var url = $(this.element).data("href");
this.href = baseURL+'assets/media-video/'+url+'.php';
},
'beforeShow': function(){
$(window).on({
'resize.iframe' : function(){
$.fancybox.update();
}
});
},
'afterClose': function(){
$(window).off('resize.iframe');
}
});
当我使用上面的代码时,我的fancybox可以正常工作,但当我尝试使用另一个函数调用时,它不起作用。
<a href="javascript:;" data-href="MBHD0790-03" onclick="vfancy(this)">DOESNT WORK</a>
function vfancy(){
fancybox({
'width': 720,
'height': 410,
'type': 'iframe',
'autoScale': false,
'autoSize': false,
'autoDimensions': false,
'padding': 0,
'beforeLoad' : function(){
var url = $(this.element).data("href");
this.href = baseURL+'assets/media-video/'+url+'.php';
},
'beforeShow': function(){
$(window).on({
'resize.iframe' : function(){
$.fancybox.update();
}
});
},
'afterClose': function(){
$(window).off('resize.iframe');
}
});
};
您的第二个代码有两个基本问题:
1) 。要以编程方式调用fancybox,您需要在jQuery范围内调用它,如:
function vfancy() {
jQuery.fancybox({
// API options
});
};
但是你用的是这个
function vfancy() {
fancybox({
// API options
});
};
这永远不会奏效。
2) 。请记住,如果已将元素绑定到fancybox(通常为<a>
元素),则只能在任何fancybox回调中使用$(this.element)
,但在这种情况下,您是在匿名函数中以编程方式调用fancybox,因此$(this.element)
是断章取义的。
你要做的是:
a) 。完全取消beforeLoad
回调(这将毫无作用)
b) 。像一样调用vfancy
匿名函数时,将data-href
属性的值作为参数传递
<a data-href="MBHD0790-03" onclick="vfancy(this.getAttribute('data-href'))" href="javascript:;" >IT WORKS NOW</a>
c) 。将href
API选项添加到fancybox函数中,并从传递给匿名函数(如)的参数中设置其值
function vfancy(url) {
jQuery.fancybox({
href: baseURL + 'assets/media-video/' + url + '.php',
// other API options
});
};
注意匿名函数需要接受参数(vfancy(url)
)。如果在下面添加更多选项,请注意href
API选项后的逗号。
请参阅JSFIDDLE
编辑
您也可以在onclick
属性中传递this
作为参数,如:
<a href="javascript:;" data-href="1_b.jpg" onclick="vfancy(this)">IT DOES WORK NOW</a>
并像一样得到CCD_ 13函数内的CCD_
function vfancy(url) {
var url = url.getAttribute('data-href');
jQuery.fancybox({
href: baseURL + 'assets/media-video/' + url + '.php',
// API options
padding: 0 //,
});
};
请参阅更新的JSFIDDLE
您需要在对象上正确调用插件:
function vfancy(obj) {
$(obj).fancybox({
width: 720,
height: 410,
type: 'iframe',
autoScale: false,
autoSize: false,
autoDimensions: false,
padding: 0,
beforeLoad: function () {
var url = $(this.element).data("href");
this.href = baseURL + 'assets/media-video/' + url + '.php';
},
beforeShow: function () {
$(window).on({
'resize.iframe': function () {
$.fancybox.update();
}
});
},
afterClose: function () {
$(window).off('resize.iframe');
}
});
};