2013-05-06 78 views
3

如何獲得作爲jQuery對象的#<HTMLDivElement>對象#<HTMLDivElement>作爲jQuery對象

我需要做以下幾點:我有一個div的列表與類的內容。所以我遍歷它,直到我找到了一個與附加類:「測試」

這裏是我的代碼:

$.each($(".contents"), function(key, value) { 
    if (value.hasClass("test")) 
    { 
     alert("got it"); 
    } 
}); 

,我發現了異常:Uncaught TypeError: Object #<HTMLDivElement> has no method 'hasClass'

+0

只要它傳遞給[jQuery的構造](http://api.jquery.com/jQuery/#jQuery-element)。 – Bergi 2013-05-06 09:50:53

+0

你爲什麼不使用像'$(「。contents.test」)這樣的選擇器?each(alert.bind(window,「got it」))'?或'$(「。contents」)。filter(「。test」)'? – Bergi 2013-05-06 09:51:20

回答

7

each()功能給你DOM對象,你必須將它轉換爲jQuery對象。您可以通過value$ jQuery函數將其轉換爲jQuery對象。

$.each($(".contents"), function(key, value) { 
    if ($(value).hasClass("test")) 
    { 
     alert("got it"); 
    } 
}); 

你並不需要通過每個迭代和簡化它像

elements = $(".contents.text") 
+1

這是工作,謝謝 – gurehbgui 2013-05-06 09:54:08

+2

投票的理由? – Adil 2013-05-06 10:01:08

+0

謝謝,不用客氣@gurehbgui。 – Adil 2013-05-06 10:01:44

0

主要jQuery的函數可以接受一個DOM元素作爲它的參數。

var foo = jQuery(HTMLElementNode); 

下面的代碼兩行具有相同的最終結果:

var foo = jQuery('#foo'); 
var foo = jQuery(document.getElementById('foo')); 
2

爲什麼不這樣做簡單的搭配:

$(".contents.test"). ... 

這裏jQuery將選擇具有兩個"contents"元素和"test"類別設置。

DEMO:http://jsfiddle.net/xfErG/

+0

這是不可能的,因爲在這個例子中它被稱爲測試,但在我的真實情況下,它總是另一個名字 – gurehbgui 2013-05-06 09:53:44

+1

@gurehbgui那麼是什麼?用'$(「。contents。」+ myClassName)''做。 – VisioN 2013-05-06 09:55:22