2009-08-13 24 views
13

如何查找對象是否被jQuery包裝。如何找出元素是否被jQuery包裝?

var obj = $('div'); 

if(obj is a jQuery wrapped object) 
{ 
    then do something 
} 

我是Javascript世界中的新手。

在此先感謝。

+0

這將使用什麼? – rahul 2009-08-13 09:48:48

+0

好吧...它會告訴你,如果你正在看的變量是一個jQuery對象...我認爲這是不言而喻的..?我選擇的一個技巧是始終將我的變量作爲jQuery對象的前綴加上$(例如:'var $ obj = $('div');')。這真的可以幫助你記住你正在處理的事情。 – nickf 2009-08-13 10:42:31

回答

23

在這裏你去:

var isJQuery = obj instanceof jQuery; // or obj instanceof $; 
+4

如果它對OP有幫助,$是簡單的jQuery函數的別名。由於這個原因,「obj instanceof $」也可以工作。 – 2009-08-13 10:34:52

+1

...歡迎來到俱樂部,karim。 :) – 2009-08-13 10:35:27

+0

很酷的東西。我不知道這一點。 – 2009-08-13 10:47:50

-2

不是一個jQuery用戶,這是未經測試等,但

if (!(obj instanceof Element)) 
{ 
    // ... 
} 

可以工作,除非jQuery不會在其包裝奇怪的事情。當然,這確實需要你知道obj永遠不可能是非jQuery,非DOM元素,但希望這並不難實施。

1

您可以測試這樣的:

if(obj instanceof jQuery) { 
    // ... 
} 

然而,這是不完全正確的說,HTML元素被「包裝」在一個jQuery對象,而jQuery對象是零個或多個HTML集合元素。所以,如果你真的要小心,你可能首先測試它是否包含在所有的任何元素,如下所示:

if(obj instanceof jQuery && obj.length > 0) { 
    var element = obj[0]; 
    // do something with element 
} 
+0

這是最好的答案。一個jQuery對象可能根本不會「包裝」HTML元素。由於'obj.size()'現在已被棄用,不過你必須使用'obj.length'。 – 2015-05-09 16:50:36

2
if (obj.jquery) { 
    /* Do something */ 
} 

這是最簡單的方法。檢查對象的構造函數是另一種選擇,但請注意,它不適用於全局上下文(例如,在父頁面和框架之間)。

0

如果「元素」var是一個或另一個,此檢查可以幫助將數組對象與jQuery「數組式」對象區分開來。

if (jQuery.isArray(element)) { 
    // plain array object: [] 
} else { 
    // jQuery wrapped object 
} 

從jQuery的文檔:

$ .isArray()返回一個布爾值,表示對象是否是JavaScript陣列(未陣列狀物體,諸如一個jQuery對象)。

相關問題