我有一个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