如图,当我点击下图中的新建分组,动态生成“ddaa”,"aa","dw"这几个p,每行p都包含文本、编辑和删除按钮,点击编辑按钮(右边第一个小图标),弹出一个编辑提示窗,编辑完成后内容会重新显示在原来的位置,但是只有最后一个“dw”能显示正常的编辑后的内容,其他的编辑后还是原来的内容,经过打印发现获取不到编辑框的val(),但是最后一个编辑框却能获取到,这是为什么啦?
代码:
$('.server-subgroup-u-edit').click(function () {
// 编辑分组弹窗 $("body").append( "" + "
编辑分组
" + "
" + "
" ); var edit_subgroup_index=$(this).parent().parent().index(); var edit_subgroup_name=$('.server-subgroup').find('p').eq(edit_subgroup_index).find('p').eq(0).html(); $('.edit_subgroup_inp').val(edit_subgroup_name); $('.edit-affirm-win').click(function () { if($('.edit_subgroup_inp').val()!='') { $('.server-subgroup').find('p').eq(edit_subgroup_index).find('p').eq(0).html($('.edit_subgroup_inp').val()); console.log($('.edit_subgroup_inp').val(),12158); $('.show-lay').remove(); } });
这是我这个功能的全部代码
$('.creat-ground-sp').click(function () {
// 新建分组弹窗 $("body").append( "" + "
新建分组
" + "
" + "
" ); $('.show-creat-affirm').on('click',function () { if ($('.new-group-inp').val() != "") { $('.server-subgroup').append('' + $('.new-group-inp').val() + '
'); $('.show-lay').remove(); } $('.server-subgroup-active').mouseenter(function () { $(this).find('i').eq(0).css('visibility','visible'); $(this).find('i').eq(1).css('visibility','visible'); }); $('.server-subgroup-active').mouseleave(function () { $(this).find('i').eq(0).css('visibility','hidden'); $(this).find('i').eq(1).css('visibility','hidden'); }); $(document).on('click','.server-subgroup-u-edit',function () { // 编辑分组弹窗 $("body").append( "" + "
编辑分组
" + "
" + "
" ); var edit_subgroup_index=$(this).parent().parent().index(); var edit_subgroup_name=$('.server-subgroup').find('p').eq(edit_subgroup_index).find('p').eq(0).html(); $('.edit_subgroup_inp').val(edit_subgroup_name); $(document).on('click','.edit-affirm-win',function () { // if($('.edit_subgroup_inp').val()!='') { $('.server-subgroup').find('p').eq(edit_subgroup_index).find('p').eq(0).html($('.edit_subgroup_inp').val()); console.log($('.edit_subgroup_inp').val(),12158); $('.show-lay').remove(); // } }); $('.show-creat-cancel').on('click',function () { $('.show-lay').remove(); }); }); $('.server-subgroup-u-delete').click(function () { // 删除分组弹窗 $('body').append( ""+ "
"+ "
"+ "
确定删除该分组吗
"+ ""+ ""+ ""+ ""+ "
"+ ""+ "" ); var subgroup_delete_index=$(this).parent().parent().index(); $('.delete-affirm-win').click(function () { $('.server-subgroup').find('p').eq(subgroup_delete_index).remove(); $('.show-lay').remove(); }) $('.delete-group-cancel').click(function () { $('.show-lay').remove(); }); }); }); $('.show-creat-cancel').click(function () { $('.show-lay').remove(); }); });
代码逻辑太乱.
编辑弹窗提出来, 没必要点击再去append, 点击show出来就行了.
同时点击一个按钮, 再去append一个p, 再给这个p里面的元素再绑定点击事件...
这种逻辑不好, 可读性低.
确实挺乱,不过append出来的东西,你不应该直接click,要这样才行:
//QAQ我写错了,应该是楼下那样,改了下
因为你是动态加入的,所以用这个
$(document).on('click','.edit-affirm-win',function(){});