附加到动态添加的元素

时间:2013-02-27 16:30:41

标签: jquery dynamic

我在加载页面时存在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);
    });
});

它甚至没有记录点击。

2 个答案:

答案 0 :(得分:1)

有两个主要问题。

  1. 当您挂钩事件时,尚未存在#test元素,因此无法连接任何内容。

  2. 您正在使用相同的id创建多个元素。

  3. 此外,您的append来电在开始时缺少$

    您可以修复第一个使用事件委派(此代码也修复了append):

    $(document).on('click', '#test', function () {
        console.log("Click");
        $("#test").append(STUFF);
    });
    

    告诉jQuery在click上挂钩document事件,但只有在事件源于或传递给匹配给定选择器(#test)的元素时才触发处理程序,因为它冒泡到文件。

    要解决第二个问题,即具有相同id的多个元素,您需要更改输出元素的循环。您可能希望使用类而不是id

答案 1 :(得分:0)

click只能处理调用时存在的元素。您应该检查.live() http://api.jquery.com/live/.on() http://api.jquery.com/on/,具体取决于您的jQuery版本。