2011-05-06 69 views
2

这可能是一个愚蠢的问题,但是有没有办法通过编程来告诉对象是jquery还是普通的javascript?如何判断obj是jquery还是普通javascript

例如:

Utils.Listbox.MoveItemsUp = function(listbox) { 

    if(listbox.isJquery()) { 
     listbox.each(function(){}); 
    } 
    else { 
     for(var i = 0; i < listbox.options.length; i++){} 
    } 
}; 

回答

8

jQuery的对象有一个叫做 'jQuery的' 属性:

>>> $('body').jquery 
"1.5.2" 
+0

这正是我正在寻找的非常感谢马可! – Darcy 2011-05-06 13:35:48

1

jQuery的刚刚的JavaScript。我想你可以测试一个jQuery功能的存在,但:

if (foo.each) 
{ 
    foo.each(function(... 
} 
else 
{ 
    $(foo).each(function(... 
} 
1

一种方法是使用jQuerys $.isPlainObject功能(doc)这将告诉你,如果它是一个对象创建使用{}new Object,一个jQuery对象将返回false。然而,也注意到一个数组和字符串和功能也将返回false:

var obj = {}; 
var $obj = $('div'); 

$.isPlainObject(obj); //returns true 
$.isPlainObject($obj); //returns false 
0

你应该记住的是,只要您的一个回调内的对象this始终是一个天然的实体,而不是一个jQuery对象。

例如:

除非使用返回类型诸如JSON对象,布尔,字符串等

如果recurving变量的具体方法的

a = $('a').each(function(){ 
    //'this' is ALWAYS an native object 
}); 

a永远是jQuery的的一个实例从功能那是你无法控制的,你想知道它是一个jQuery对象,你可以做到以下几点:

if(!listbox || !listbox.jquery) 
{ 
    listbox = $(listbox) 
} 
//the variable is now always going to be a jQuery object. 

的原因因为这是jQuery总是在选定的上下文中存储对其版本的引用

0

要测试某个对象是否为jQuery对象,请检查它的jquery属性。所以:

<script> 
Utils.Listbox.isJquery = function() 
{ 
    return typeof this.jquery != 'undefined'; 
} 
</script> 
相关问题