我现在页面里有一个修改<input type="submit" value="修改" id="update">按钮,
我希望一点这个按钮,将它换成一个提交<input type="submit" value="提交" id="submit">按钮, 所有写了这么一段测试的代码,但是结果让人琢磨不透。
测试代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="js/jquery-1.4.min.js"></script>
<script>
$(function(){
$("#update").click(function(){
$("#update").parent().html("<input type='submit' id='submit' value='提交'>");
alert($("#submit").val());//这儿弹出的值是"提交"
});
 $("#submit").click(function(){
alert("submit");//但是这个不执行
});
});
</script>
</head>
<body>
<div>
<input type="submit" value="修改" id="update">
</div>
</body>
</html>
当点了提交后确实页面上的按钮发生了变化,但是再点提交的时候,就没任何反应。请大家帮忙看看。

解决方案 »

  1.   


    $(function(){
        $("#update").click(function(){
            $("#update").parent().html("<input type='submit' id='submit' value='提交'>");
            alert($("#submit").val());//这儿弹出的值是"提交"
            $("#submit").click(function(){//把新生成的input的事件绑定放在该元素插入dom结构中后面就可以了
                alert("submit");//但是这个不执行
            });
        });
    });
    你把事件绑定放在$(function(){})里面的话一开始是没有这个input的,所以事件不会触发。或者像下面这样用live或者delegate来绑定submit的事件$(function(){
        $("#update").click(function(){
            $("#update").parent().html("<input type='submit' id='submit' value='提交'>");
            alert($("#submit").val());//这儿弹出的值是"提交"
        });
        $("#submit").live('click',function(){//这里用live就可以了。不过好像JQuery什么版本之后live方法被取消掉了,用delegate方法,具体的自己去查一下。
            alert("submit");//但是这个不执行
        });
    });
      

  2.   

    动态绑定事件应该用delegate或者live实现。
      

  3.   


    $(function(){
    $("#update").click(function(){
    $("#update").parent().html("<input type='submit' id='submit' value='提交'>");
    alert($("#submit").val());//这儿弹出的值是"提交"
    });


    //你在这里想给 #submit 注册一个 click 事件,但是当你在注册的这一瞬间,#submit 还不存在呢!

    $("#submit").click(function(){
    alert("submit");
    });
    });
      

  4.   

    动态创建的对象可以考虑在创建时绑定事件,比如var newBtn = $('input').attr({type:'submit',id:'submit',value:'提交'});
    newBtn.bind('click',function(){
    //..click handler code
    });
    $("#update").parent().empty().append(newBtn);
            alert($("#submit").val());//这儿弹出的值是"提交"
        });