javascript - 动态生成多行样式,每个样式中都有编辑按钮,点击样式中编辑按钮并提交,发现只有最后一个样式中能展示对应的编辑内容,这是为啥?
PHPz
PHPz 2017-04-11 11:46:59
0
3
337

如图,当我点击下图中的新建分组,动态生成“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(); }); });
PHPz
PHPz

学习是最好的投资!

reply all (3)
阿神

代码逻辑太乱.
编辑弹窗提出来, 没必要点击再去append, 点击show出来就行了.
同时点击一个按钮, 再去append一个p, 再给这个p里面的元素再绑定点击事件...
这种逻辑不好, 可读性低.

    巴扎黑

    确实挺乱,不过append出来的东西,你不应该直接click,要这样才行:

    $('body').on("click",".edit-affirm-win",function () { }) 包括这个也是$('.server-subgroup-u-edit')

    //QAQ我写错了,应该是楼下那样,改了下

      小葫芦

      因为你是动态加入的,所以用这个$(document).on('click','.edit-affirm-win',function(){});

        Latest Downloads
        More>
        Web Effects
        Website Source Code
        Website Materials
        Front End Template
        About us Disclaimer Sitemap
        php.cn:Public welfare online PHP training,Help PHP learners grow quickly!