我有一個div,當頁面加載時存在。我追加了一個按鈕,另一個按鈕。然後我想單擊按鈕並將其添加到其中。追加動態添加元素
到目前爲止,第一部分是工作,但我不能追加到了動態創建的任何元素。
$(document).ready(function() {
// THIS WORKS
$("#Value").change(function() {
var value = $("#Value").val();
$("#Question_Field").empty();
for (var i = 1; i <= value; i++) {
$("#Question_Field").append('<input type="button" id="button" /><div id="test"></div>');
}
});
// THIS DOES NOT WORK
$("#test").click(function() {
console.log("Click");
("#test").append(STUFF);
});
});
它甚至沒有記錄點擊。
謝謝。這有多高效?是否需要搜索所有元素,直到找到每次匹配#test的元素爲止?如果我必須用不同ID的多個元素來做到這一點呢?也許像'#test'+ i – Jeff 2013-02-27 17:18:27
@Jeff:這很有效。在創建事件時,事件生成的實際元素是該事件對象('event.target')的一部分。所有jQuery必須做的,一旦點擊到達文檔,就從'event.target'開始,看它是否與選擇器匹配。如果沒有,它會轉到目標的'parentNode'並檢查它。如果不匹配,則轉到* that *的'parentNode'。即使你的HTML結構有15個嵌套元素(一個'div'包含另一個'div',其中包含'tbody','tr','td'和九個*進一步*級別的'table'),那麼,這只是15個元素來檢查。 – 2013-02-27 17:21:48
@Jeff:如果你想匹配多個'id'值,你就可以像CSS一樣完成這些工作:'#test,#foo,#bar'。但是,無論何時你列出多個這樣的'id'值,你都必須問自己是否應該使用一個類。 – 2013-02-27 17:22:37