2012-02-26 39 views
-3

这里是有一段代码:jQuery的:«孩子»VS«.find»+«.live»

HTML:

<div class="thematicHeaderBox group"> 
<h3 class="thematicHeader group">SMTH</h3> 
<button class="activatedUsual" style="float: right; ">on</button> 
</div> 

JS,不工作:

attachEvents(
$(".thematicHeaderBox").children(".activatedUsual"), 
self.elem.box.thematic.settings.event 
); 

JS,WORKS:

attachEvents(
$(".thematicHeaderBox").find(".activatedUsual"), 
self.elem.box.thematic.settings.event 
); 

attachEvents FUNC:

function attachEvents (elems, data) { 

    for(var p in data){ 
     if(data.hasOwnProperty(p)){ 
      elems.live(
       data[p].name, 
       data[p].callback 
      ); 
     } 
    } 
} 

数据是一个对象事件名称和回调使用的数组。

问题是为什么只有第二个变体正常工作。

+4

对不起,但是问题是什么? – 2012-02-26 08:51:29

+0

问题是为什么只有第二个变体能正常工作。 – 2012-02-26 17:07:30

回答

1

.children()方法允许我们通过直接子代在DOM树中搜索这些元素,并从匹配元素构造一个新的jQuery对象。

立即孩子意味着一个层次。在你的情况下,.activatedUsual不是'.thematicHeaderBox'的直接子节点。

+0

根据定义,子元素立即位于层次结构中的另一个元素之下... – BoltClock 2012-02-26 17:36:44

+0

正是如此。但他正在用'.children()'找一个孩子的孩子。我只是解释一下这个定义。 – 2012-02-26 17:38:54

+0

日志记录 $(“。thematicHeaderBox”)。find(“。onBtnType1,.offBtnType1”)); 和 $(“。thematicHeaderBox”)。children(“。onBtnType1,.offBtnType1” – 2012-02-26 23:02:22