JQuery element.children(“。class”)返回null

时间:2010-08-09 17:52:48

标签: jquery

必须有一些显而易见的事我做错了,但我没有看到它。我已经使用JQuery获得了对DOM元素的引用。它有以下innerHTML(来自javascript调试器):

<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>

但是,当我执行以下操作时,我会得到null。

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

“复选框”不是允许的类名吗?

谢谢!

对于Matt,完整代码如下:

  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(”。复选框“)”这一行并没有引发同样的例外,这很奇怪。

1 个答案:

答案 0 :(得分:3)

您需要确保从jquery wrapped sets / jquery对象调用jquery方法。

只需更改

之类的代码即可实现这一目标
 $(parent).children("div.strategy").each(function(i){
     var checkboxes = $(this).children(".checkbox"); 
     ...yourstuff ...
     //'this' refers to each strategy dom element
 }) ;

Children也是DOM元素的属性,因此可能会引起一些混淆。