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

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

学习是最好的投资!

全部回复(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(){});

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号