Javascript 检查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

我正在注册一个jQuery fancybox,如下所示:

        $(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似乎没有这样做。至少在我的经验中不是这样。