在事件本身的新元素上指定click事件

Assign click-event on a new element in the event itself

本文关键字:事件 click 元素 新元素      更新时间:2023-09-26

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

演示

$(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 // <-- ?????
    });
});

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

有人能帮我吗?我找不到解决这个问题的办法。也许我没有谷歌或SO:/的正确关键字

只需使用事件委派

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

此时,您的单击事件似乎工作正常,因为您使用的是append,它实际上将new div嵌套在单击的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>');
    });
}); 

检查Fiddle

为什么不创建合适的元素:

$(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);
    }
});