2010-08-09 63 views
1

必須有一些明顯的我做錯了,但我沒有看到它。我已經使用JQuery獲得了對DOM元素的引用。它具有以下innerHTML(來自javascript調試器):JQuery element.children(「。class」)返回null

<INPUT type=hidden name=Item.ItemIndicators[0].Indicator.Strategies[0].Description> 
<INPUT style="DISPLAY: none" class=checkbox value=00000000-0000-0000-0000-000000000000 type=checkbox name=Item.ItemIndicators[0].Indicator.Strategies[0].Id> 
<INPUT value=-1 type=radio name=Item.ItemIndicators[0].Indicator.Strategies[0].Weight> 
<INPUT value=1 type=radio name=Item.ItemIndicators[0].Indicator.Strategies[0].Weight> 
<INPUT type=text150 name=Item.ItemIndicators[0].Indicator.Strategies[0].Description> 

但是,當我執行以下操作時,我得到空。

var child = myElement.children(".checkbox"); 

「複選框」不是允許的類名稱,也許?

謝謝!

馬特,下面全碼:

var strategies = parent.children("div.strategy"); 

    for (var i = 0; i < strategies.length; i++) 
    { 
      //strategies[i] is the element in question w/the innerHTML above 
      var checkbox = strategies[i].children(".checkbox"); //returns null 
      ...elided... 
    } 

附加信息:如果我這樣做,我碰到一個「對象不支持此屬性或方法」:

var strategy = strategies[i]; 
var children = strategy.children(); //object doesn't support this property or method 

不知道在這裏使用的術語,但從調試器中顯示的屬性,並從這個錯誤,這似乎是策略對象沒有被看作是jQuery的jQuery對象,而只是作爲一個DOM元素(即,它缺少[ 0]屬性)。儘管如此,「策略[i] .children(」。checkbox「)」不會拋出相同的異常,這很奇怪。

+2

你將需要提供更多的代碼。例如,在哪裏定義了myElement? – 2010-08-09 17:54:04

+0

我已經使用複選框作爲類名,它不是 – 2010-08-09 17:54:47

+1

TBH,該代碼是**醜陋**。只是說' – 2010-08-09 17:55:38

回答

3

你需要確保你調用了jquery包裝的jquery對象的jquery方法。

你可以做到這一點只需改變你的代碼,類似

$(parent).children("div.strategy").each(function(i){ 
    var checkboxes = $(this).children(".checkbox"); 
    ...yourstuff ... 
    //'this' refers to each strategy dom element 
}) ; 

Children也是DOM元素的屬性,因此可能會造成一些混亂。

+0

太棒了 - 謝謝。我得出了這個結論,但是以一種更加直接的方式來實現它。 – sydneyos 2010-08-09 22:04:45