后台有这样一个文章列表。<div id="list">
        <p id="1">
            <a href="/uc/book_mybookshelf.aspx?id=1">文章一</a>
            <a class="edit" href="javascript:void()">编辑</a>
        </p>
<p id="2">
            <a href="/uc/book_mybookshelf.aspx?id=2">文章二</a>
            <a class="edit" href="javascript:void()">编辑</a>
        </p>
<p id="3">
            <a href="/uc/book_mybookshelf.aspx?id=3">文章三</a>
            <a class="edit" href="javascript:void()">编辑</a>
        </p>
<p id="4">
            <a href="/uc/book_mybookshelf.aspx?id=4">文章四</a>
            <a class="edit" href="javascript:void()">编辑</a>
        </p>
<p id="5">
            <a href="/uc/book_mybookshelf.aspx?id=5">文章五</a>
            <a class="edit" href="javascript:void()">编辑</a>
        </p>
</div>JQUERY 代码:$(function () {
            $(".edit").click(function () {
                //文章的id,要传到后台ashx中使用
                var tid = $(this).parent("p").attr("id");
                //显示隐藏层
                $("#editform").show();
                $("#editform").css("background", "green");
                //取当前行的文章名
                var oldname = $(this).parent("p").children("a").html();
                //赋值给隐藏层的oldname
                $("#oldname").html(oldname);
                //隐藏层的点击事件
                $("#btnEdit").click(function () {
                    var newname = $("#txtNewname").val();
                    if (newname.length <= 0) {
                        alert("新名称不能为空");
                        return false;
                    }
                    //传给后台
                    $.post("/uc/manage/edit_bookshelf.ashx", { id: tid, name: newname },
                        function (data, status) {
                            if (status != "success") {
                                alert("通信失败!");
                                return false;
                            }
                            if (data == "1") {
                                alert("修改成功");
                            }
                            else if (data == "2") {
                                alert("你无权修改");
                                return false;
                            }
                        });
                });            });
        });
问题现象:
先点击第一个编辑,然后在弹出框中点修改,弹出一个alert。
再点击第二个编辑,点修改,弹出二个alert.
点第三个编辑,点修改,弹出三个alert.
....
这里,后面为什么会弹出多个alert.新手,求解。

解决方案 »

  1.   

    如果btnEdit不是动态生成的,那么可能是事件重复绑定了
    $("#btnEdit").click(function () {});
      

  2.   

    btnEdit是写在列表下面的,忘补上了。
    <div id="editform" style="display: none;">
            原书架名:<span id="oldname"></span><br />
            变更为:<input type="text" id="txtNewname" />
            <input type="button" id="btnEdit" value="修改" />
    </div>我也觉得是事件重复绑定了,可是应该怎么清除?
      

  3.   

    把$("#btnEdit").unbind();放在 alert("新名称不能为空");后面不行。
      

  4.   


    var newname;
    $("#btnEdit").click(function () {
                        newname = $("#txtNewname").val();
                        if (newname.length <= 0) {
                            alert("新名称不能为空");
                            return false;
                        }
      

  5.   


    你这样写还是不行。我自己解决了。
    把 $("#btnEdit").unbind();加在 $(".edit").click(function () {中就可以了。