2010-12-09 35 views
2

的元素我保存在我的JS自定義對象一個變種(下面的代碼是從類中):如何讓孩子HTML元素

var toolbar; 

this.create_toolbar = function() { 
    self.toolbar = document.createElement('div'); 
    $(self.toolbar) 
     .html('<ul>' + 
      '<li id="insert_bold"></li>' + 
      '<li id="insert_em"></li>' + 
      '<li id="insert_hyperlink"></li>' + 
      '<li id="insert_code"></li>' + 
      '<li id="insert_image"></li>' + 
      '</ul>') 
     .insertBefore(self.editTextarea); // just a textarea on the page 
} 

工具欄被創建併成功地放置,和自我。工具欄現在保存新div的對象。然而,試圖將<李綁定>「s到點擊時,我似乎無法得到任何發生:

$(self.toolbar).children("li#insert_bold").click(function() { 
    alert("just checking"); 
}); 

要清楚,當我點擊<李ID上面,什麼都沒發生後= 「insert_bold」>

有什麼,我失蹤?我相當新的jQuery ....我允許把一個變量,持有一個[對象對象]在$()?如果不是,我該怎麼做?

回答

5

這裏需要使用.find(),像這樣:

$(self.toolbar).find("li#insert_bold").click(function() { 
    alert("just checking"); 
}); 

.children()只着眼於眼前兒童<li><ul>下了,所以它不是一個直接子。


要知道,雖然如果你打算在具有網頁上的這多個實例(我猜這是有可能的情況下),你應該使用類來代替(IDS必須是唯一的),然後用類選擇器,例如:$(self.toolbar).find("li.insert_bold")

+0

我的生活現在好多了,謝謝! – johnnietheblack 2010-12-09 17:31:45

1

儘管Nick已經解決了您的問題,但我不認爲這是一個好主意,尤其是如果您有大量HTML元素綁定。

當我有一個相當小的數字,我不聚集在一個對象的項目的主要構造函數中

this.el = { 
$button : $('.button','#div'), 
$submit : $('.submit','#div') 
}; 

後來,當我需要的元素,我只是(這)調用它,假設你正在使用原型功能。

this.el.$button.click(function() { 

}); 

如果您需要處理20個或更多的元素,我會建議您選擇JavaScript FrameWork。 Backbone Js是個不錯的選擇。

相關問題