在事件本身的新元素上分配click-event

时间:2013-08-01 19:12:29

标签: javascript jquery

我想创建一个新元素,并为onclick分配该元素相同的事件,它已创建它。

DEMO

$(function(){
    var counter = 0;
    $('.sub').click(function(event){
        event.stopPropagation();
        counter++;
        $div = $(this); // makes more sense in the original code
        $div.append('<div class="sub" title="subsub">subsub' + counter + '</div>');
        //$div.find('.sub').click // <-- ?????
    });
});

在我的演示中,我想为每个sub创建一个新的子目录,单击该子目录。我想将相同的点击事件添加到新的子子元素。

有人可以帮我吗? 我没有找到这个问题。也许我没有谷歌或SO的正确关键字:/

2 个答案:

答案 0 :(得分:3)

只需使用活动委派

即可
 $(document).on('click', '.sub', function(event){

此时您的点击事件似乎正常,因为您正在使用append,它实际上嵌套了被点击的div中的new div。尝试使用after和功能中断。

$(function(){
    var counter = 0;
    $(document).on('click', '.sub', function(event){
        event.stopPropagation();
        counter++;
        $div = $(this); // makes more sense in the original code
        $div.after('<div class="sub" title="subsub">subsub' + counter + '</div>');
    });
}); 

<强> Check Fiddle

答案 1 :(得分:1)

为什么不改为创建适当的元素:

$(function(){
    var counter = 0;
    $('.sub').on('click', doStuff);

    function doStuff(event) {
        event.stopPropagation();
        counter++;
        var $div = $(this),
            $sub = $('<div />', {'class':'sub',
                                 title  : 'subsub',
                                 text   : 'subsub' + counter,
                                 on     : {
                                            click : doStuff
                                          }
                                }
        );

        $div.append($sub);
    }
});
相关问题