如何检查jQuery插件和函数是否存在?

时间:2011-03-17 13:45:27

标签: javascript jquery-plugins jquery marquee

我在某些页面中有一个插件,但在其他一些页面中我不想要它,所以我没有引用它的脚本文件。

如何在使用之前检查插件功能是否存在。

在我的情况下,我正在使用这个插件:我这样使用它:

$('#marquee-inner div').marquee('pointer').mouseover(function() {
    $(this).trigger('stop');
}).mouseout(function() {
    $(this).trigger('start');
}).mousemove(function(event) {
    if ($(this).data('drag') == true) {
        this.scrollLeft = $(this).data('scrollX') + ($(this).data('x') - event.clientX);
    }
}).mousedown(function(event) {
    $(this).data('drag', true).data('x', event.clientX).data('scrollX', this.scrollLeft);
}).mouseup(function() {
    $(this).data('drag', false);
});

我想要的是在调用此选取框函数之前进行检查(如果存在与否)。

3 个答案:

答案 0 :(得分:121)

if ($.fn.marquee) {
    // there is some jquery plugin named 'marquee' on your page
}

答案 1 :(得分:17)

您也可以这样做。让我以jQuery marquee为例。

如果你只使用jQuery,这很好。

if($().marquee) {
    // marquee is loaded and available
}

OR

if($.fn.marquee !== undefined) {
    // marquee is loaded and available
}

与上面类似,但在使用其他JS框架Mootools等时安全。

if(jQuery().marquee) {
    // marquee is loaded and available
}

OR

if(jQuery.fn.marquee !== undefined) {
    // marquee is loaded and available
}

答案 2 :(得分:4)

稍微好一些:

if ($.isFunction($.fn.marquee)) {
    // ...
}

可能有点矫枉过正,但这将确保它至少是一个功能。