Javascript 检查jQuery是否为;Fancybox“;已经注册了吗?
我正在注册一个jQuery fancybox,如下所示:Javascript 检查jQuery是否为;Fancybox“;已经注册了吗?,javascript,jquery,events,fancybox,Javascript,Jquery,Events,Fancybox,我正在注册一个jQuery fancybox,如下所示: $(document).ready(function() { $("#help").fancybox({ 'width': '90%', 'height': '90%', 'autoScale': true, 'transitionIn': 'elastic', 'transitionO
$(document).ready(function() {
$("#help").fancybox({
'width': '90%',
'height': '90%',
'autoScale': true,
'transitionIn': 'elastic',
'transitionOut': 'none',
'titleShow': false,
'type': 'iframe'
});
});
然而,在页面传输/回发时,它会被注册多次,这将使它的速度减慢到崩溃的程度。是否有办法检查事件是否已注册,如果未注册,是否已注册
伪代码:
//check if fancybox has not been registered
if($("help").fancybox == null))
{
//register fancy box
}
当fancybox运行时,它会将一个
fancybox
条目添加到jQuery的data
对象中
您可以测试其存在性:
if( ! $("#help").data().fancybox )
{
//register fancy box
}
此函数用于查找您的
#help
元素,并仅在fancybox.js存在时加载它。成功加载Fancybox.js后,它将调用success函数并初始化Fancybox
这只会影响包含元素#help
的页面。因此,您可以节省HTTP请求和带宽
见:
您还应该查找允许您处理错误的错误函数
$(document).ready(function() {
// Look for #help
if ( $('#help').html() !== null ) {
// Load, init and config the fancybox
$.ajax({
url: '/js/path/to/fancybox.js',
type: 'GET',
dataType: 'script',
success: function() {
// Init Fancybox
$("#help").fancybox({
'width': '90%',
'height': '90%',
'autoScale': true,
'transitionIn': 'elastic',
'transitionOut': 'none',
'titleShow': false,
'type': 'iframe'
});
}
});
}
});
Fancybox使用$(element).data()存储其与元素相关的配置。您只需检查是否存在fancybox
$("#fancy").data("fancybox");
更多fnu信息,请参见此。有点晚了,但对于Fancybox 2,我使用:
parent.jQuery.fancybox.isOpen
我认为你也可以使用:
parent.jQuery.fancybox.isopend
如果站点上打开了fancybox,这两条语句都将返回true。fancybox 2似乎没有这样做。至少在我的经验中不是这样。