如何查找對象是否被jQuery包裝。如何找出元素是否被jQuery包裝?
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
我是Javascript世界中的新手。
在此先感謝。
如何查找對象是否被jQuery包裝。如何找出元素是否被jQuery包裝?
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
我是Javascript世界中的新手。
在此先感謝。
在這裏你去:
var isJQuery = obj instanceof jQuery; // or obj instanceof $;
如果它對OP有幫助,$是簡單的jQuery函數的別名。由於這個原因,「obj instanceof $」也可以工作。 – 2009-08-13 10:34:52
...歡迎來到俱樂部,karim。 :) – 2009-08-13 10:35:27
很酷的東西。我不知道這一點。 – 2009-08-13 10:47:50
不是一個jQuery用戶,這是未經測試等,但
if (!(obj instanceof Element))
{
// ...
}
可以工作,除非jQuery不會在其包裝奇怪的事情。當然,這確實需要你知道obj永遠不可能是非jQuery,非DOM元素,但希望這並不難實施。
您可以測試這樣的:
if(obj instanceof jQuery) {
// ...
}
然而,這是不完全正確的說,HTML元素被「包裝」在一個jQuery對象,而jQuery對象是零個或多個HTML集合元素。所以,如果你真的要小心,你可能首先測試它是否包含在所有的任何元素,如下所示:
if(obj instanceof jQuery && obj.length > 0) {
var element = obj[0];
// do something with element
}
這是最好的答案。一個jQuery對象可能根本不會「包裝」HTML元素。由於'obj.size()'現在已被棄用,不過你必須使用'obj.length'。 – 2015-05-09 16:50:36
if (obj.jquery) {
/* Do something */
}
這是最簡單的方法。檢查對象的構造函數是另一種選擇,但請注意,它不適用於全局上下文(例如,在父頁面和框架之間)。
如果「元素」var是一個或另一個,此檢查可以幫助將數組對象與jQuery「數組式」對象區分開來。
if (jQuery.isArray(element)) {
// plain array object: []
} else {
// jQuery wrapped object
}
從jQuery的文檔:
$ .isArray()返回一個布爾值,表示對象是否是JavaScript陣列(未陣列狀物體,諸如一個jQuery對象)。
這將使用什麼? – rahul 2009-08-13 09:48:48
好吧...它會告訴你,如果你正在看的變量是一個jQuery對象...我認爲這是不言而喻的..?我選擇的一個技巧是始終將我的變量作爲jQuery對象的前綴加上$(例如:'var $ obj = $('div');')。這真的可以幫助你記住你正在處理的事情。 – nickf 2009-08-13 10:42:31