2012-02-26 64 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