Как проверить, что плагин и функции jQuery существуют? - PullRequest
45 голосов
/ 17 марта 2011

У меня есть плагин на некоторых страницах, но на некоторых других страницах он мне не нужен, поэтому я не ссылался на его файл скрипта

Как проверить, существуют ли функции плагина перед его использованием.

В моем случае я использую этот плагин: и я использую его так:

$('#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 ]

123 голосов
/ 17 марта 2011
if ($.fn.marquee) {
    // there is some jquery plugin named 'marquee' on your page
}
17 голосов
/ 18 апреля 2013

Вы также можете сделать это.Позвольте мне взять пример jQuery marquee.

Это хорошо, если вы используете только jQuery.

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

ИЛИ

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

Аналогично выше, но безопасно, когда вы находитесьиспользование других платформ JS Mootools и т. д.

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

ИЛИ

if(jQuery.fn.marquee !== undefined) {
    // marquee is loaded and available
}
5 голосов
/ 03 сентября 2013

Чуть лучше:

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

Может быть, немного излишним, но это гарантирует, что это по крайней мере функция.

...