Как мне проверить, определено ли prettyPhoto

#jquery #jquery-plugins #prettyphoto

#jquery #jquery-плагины #prettyphoto

Вопрос:

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

 $("a[rel^='prettyPhoto']").prettyPhoto({
        theme: 'light_square',
        showTitle: false,
        allow_resize: true
    });
  

проблема в том, что на некоторых страницах prettyPhoto не определено и вызывает ошибку в firebug, поэтому я подумал, что попробую это

 if(typeof prettyPhoto=="undefined"){
    //do nothing
}else{
    $("a[rel^='prettyPhoto']").prettyPhoto({
        theme: 'light_square',
        showTitle: false,
        allow_resize: true
    });
}
  

но это всегда выполняется как true, даже на страницах, на которых доступно prettyPhoto….есть идеи

Ответ №1:

Попробуйте это:

 if (typeof $.fn.prettyPhoto == "function") {
    // we have prettyPhone on the page
}
  

Комментарии:

1. Вы могли бы даже просто сделать if ($.fn.prettyPhoto) , хотя это немного слабее.

2. Что такое $.fn. и можете ли вы использовать $.fn. для большинства элементов jquery, чтобы убедиться, что они доступны

3. $.fn это прототип функции jQuery, место, где определены все методы экземпляра (все, что вы используете в коллекциях элементов, например $('p').text() , $('p').each() , и т.д.).

Ответ №2:

если вы создаете console.log(prettyPhoto) на странице, на которой, как вы знаете, есть prettyPhoto, что это значит? объект?

Если да, то вы делаете

 if(typeof prettyPhoto === 'object'){
    //do your stuff here.
}