如何将动作添加到在jquery中动态创建的元素?

时间:2011-08-17 16:57:25

标签: javascript jquery dom dynamic element

我有一个按钮,当您单击此按钮时,它会动态创建第二个按钮。我需要在动态创建的按钮(第二个按钮)上放置一个单击事件,我这样做,但我的点击功能不起作用。

如何让我的点击功能与动态创建的元素配合使用?

7 个答案:

答案 0 :(得分:3)

我知道很久以前就问过这个问题了...... 从jQuery v1.7开始,正确的方法是:

$(document).on( "click",'.myNewlyCreatedElement', function () {
    // Your action
});

参考:http://api.jquery.com/on/

答案 1 :(得分:2)

您需要在创建后将click事件绑定到第二个按钮。或者使用jQuery Live或Delegate函数。

http://api.jquery.com/delegate/

  

为所有匹配的元素附加处理程序到一个或多个事件   选择器,现在或将来,基于一组特定的root   元件。

如果您需要更多帮助,请发布一些代码。

答案 2 :(得分:1)

您必须使用jQuery .live()函数,该函数可以找到here

示例:

$('button').live('click', function(){
    ...
});

答案 3 :(得分:1)

Here is an example

标记:

<button id="create">Create</button>

<div id="container">
</div>

脚本:

var count = 0;
$("#create").click(function(e) {
    var num = count += 1;
    var newButton = $("<button>New " + num + "</button>").click(function() {
        alert("Button " + num + " was clicked.");
    });
    $("#container").append(newButton);
});

答案 4 :(得分:0)

查看jQuery .live()

jQeru .live()

答案 5 :(得分:0)

您需要使用jqueries live方法附加事件。它会将事件绑定到当前和未来元素的所有实例。

$('.classname').live('click', function() {
  alert("triggered");
});

这样,click事件被添加到classname为classname的所有元素 - 即使你插入更多具有相同类的元素。

答案 6 :(得分:0)

<input id="but1" type="button" value="click"></input>
<script>
$(document).ready(function(){
    $('#but1').click(function(){
    var button = $(document.createElement('input'));
        button.attr('id', 'but2');
        button.val('but2');
        button.attr('type', 'button');
        button.click(function(){alert('hello');});

        $(document.body).append(button);

    });

});
</script>