对于加载了jquery和jquery.ui的网站,我尝试了以下实验。
如果我在镀铬控制台输入..。
jQuery.ui
>Object {version: "1.9.1", keyCode: Object, ie: false, ie6: false, plugin: Object…}但如果我想要它的类型我会..。
typeof this["jQuery.ui"]
>"undefined"有人能解释一下为什么吗?我应该如何知道jQuery.ui是否存在.如果"jQuery.ui“名称包含在字符串变量中,我将如何使用该变量来检查是否存在。
var myvar = "jQuery.ui";
typeof this[myvar]; 发布于 2014-10-02 22:13:11
键入jQuery.ui时,您正在访问全局变量jQuery,然后请求该对象提供一个名为ui的属性。
this["jQuery.ui"]向全局对象请求一个名为"jQuery.ui"的属性。这是完全不同的事情。
我将如何/应该如何判断jQuery.ui是否存在?
最简单的办法是:
if (jQuery && jQuery.ui) {
// jQuery.ui exists
}如果"jQuery.ui“名称包含在字符串变量中,我将如何使用该变量检查是否存在?
不要这样做。不要将变量的名称存储为字符串。这是个坏主意。特别是当您试图检查全局变量时。
发布于 2014-10-02 22:27:16
如果"jQuery.ui“名称包含在字符串变量中,我将如何使用该变量检查是否存在?
如果您确实想要完成这一任务,请尝试以下代码:
function existsOn(prop, obj){
var parts = prop.split('.');
for(var i=0; i < parts.length; i++){
obj = obj[parts[i]];
if(!obj){
return false;
}
}
if(obj){
return true;
}
return false;
}
var str = "jQuery.ui";
alert("Exists: " + existsOn(str, window));
https://stackoverflow.com/questions/26170364
复制相似问题