如何使用jQuery添加直接和委托的div

时间:2014-05-28 16:53:52

标签: jquery click keydown

我有一个div,当点击它时,它会切换到contenteditor ......

.attr('contenteditable',true)

如果按下回车键,它将在下面添加一个div。

请参阅示例:http://jsfiddle.net/UserNaN/9yFbL/

但问题是,当添加一个新div时,我无法将这些事件委托click / keydown工作。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

以下是使用.on()进行委派活动的简化版本。所有的id都已更改为类,并且已删除了一些不需要的函数。 - http://jsfiddle.net/jayblanchard/9yFbL/5/

$('body').on('click', '.container .content', function(e) {
    e.stopPropagation();
    $(this).find('.text').removeAttr('contenteditable'); // not sure why this div was editable and then have the attribute moved to its parent
    $(this).attr('contenteditable',true).focus();
});
$('body').on('keydown', '.container .content', function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
        $(this).parent('.container').append('<div class="content"></div>');
        $(this).parent('.container').find('.content:last').append('<div class="text">ADDED</div>');
        $(this).removeAttr('contenteditable');
        $(this).parent().find('.content:last').attr('contenteditable',true).focus();
    }
});

如果我能够花更多的时间在这上面,我可能会让它更优雅。