2011-10-12 70 views
1

我有这样的片段,它是我的主要的js文件,我们的整个网站使用我如何检查是否prettyPhoto定义

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

这个问题是在一些网页上prettyPhoto是不确定的,并导致萤火虫错误所以我想我会尝试这个

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

但这始终执行以真正的,甚至对prettyPhoto是可用的页面....任何想法

回答

9

试试这个:

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

你甚至可以只是做'如果($ .fn.prettyPhoto)',虽然这是一个有点宽松。 – nrabinowitz

+0

什么是$ .fn。你可以使用$ .fn。在大多数jQuery元素上确保它们可用 – Trace

+0

'$ .fn'是一个jQuery函数原型,它定义了所有实例方法(您在元素的* collections *上使用的所有元素,比如'$('p')。text ()','$('p')。each()'等)。 – dfsq

0

如果你在一个你知道有prettyPhoto的页面上做了一个console.log(prettyPhoto),它说它是什么?一个东西?

如果是这样,那么你做

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

dfsq说的应该是正确的 –