我想创建一个新元素,并为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 // <-- ?????
});
});
在我的演示中,我想为每个sub创建一个新的子目录,单击该子目录。我想将相同的点击事件添加到新的子子元素。
有人可以帮我吗? 我没有找到这个问题。也许我没有谷歌或SO的正确关键字:/
答案 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);
}
});