如何在jquery中为新附加的div添加click事件?

时间:2014-01-08 13:28:07

标签: javascript jquery html css

这是我的HTML

 <div id="main">
    <div class="submit">welcome</div>
 </div>

这是我的jquery

 $(".submit").click(function()
 {
     $("$main").append('<div class="submit">welcome</div>');

 });

这里发生了什么事情,这是为第一个div工作。这个事件不适用于新添加的div?

如何解决这个问题?

6 个答案:

答案 0 :(得分:5)

您有两个选项,委托(指定父级检测到的点击处理程序):

$('#main').on('click', 'div.submit', function(){
    // this is your click-handler
});

或者通过在元素创建点绑定click-handler:

$(".submit").click(function() {
    $('<div />', {
        'class' : 'submit',
        'on' : {
            'click' : function(){
                // this is your click-handler
            }
        }).appendTo('#main');

});

显然,如果你有一个要调用的命名函数,你可以分配它而不是使用匿名函数:

$('#main').on('click', 'div.submit', namedFunctionToCall);

或者:

$(".submit").click(function() {
    $('<div />', {
        'class' : 'submit',
        'click' :  namedFunctionToCall
        }).appendTo('#main');

});

参考文献:

答案 1 :(得分:0)

使用委托:

$("#main").on("click", ".submit", function()
{
    $("#main").append('<div class="submit">welcome</div>');
});

选择$时,将#替换为#main

答案 2 :(得分:0)

使用event delegation

$("#main").on('click', '.submit', function () {
    $("#main").append('<div class="submit">welcome</div>');
});

演示:Fiddle

答案 3 :(得分:0)

如果您使用的div id喜欢

,则需要定义#
$("#main").append();

如果你的使用类可以访问它。像那样

$(".main").append();

答案 4 :(得分:0)

试试这个

$(function(){
    $('.submit').bind('click', function (event) {
       alert("Hello");
     });
   });

答案 5 :(得分:0)

您可以使用实时功能

 $( ".submit" ).live( "click", function() {
  alert("Appended" ); // jQuery 1.3+
});