2011-05-06 73 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> 
相關問題