将.live函数转换为.on的问题

时间:2013-02-08 22:05:23

标签: jquery event-delegation

更新一些代码库并遇到问题我似乎无法征服。我已经阅读了.on文档,觉得我对它有足够的理解。当您登录时,表单将通过ajax.load引入。没有问题。在一个简单的设置,如:

<div id="FXCMForm">
    <form action="processor.php" method="post" id="Form1">
        <ul>
            //other li's
            <input type="submit" id="Button1" value="Create License Key" />
            //other li's            
        </ul>
        <div id="Msg1" class="error"><a class="close">X</a><ul></ul></div>
    </form>
</div>

使用.live的旧代码就是这样的

$("#Button1").live('click',function(){
$("#Form1").validate({
    errorContainer: "#Msg1",
    errorLabelContainer: "#Msg1 ul",
    errorElement: "li",
    submitHandler: function(form) {
        $('#prcs1').show();
        var dataString = $(form).serialize();
        $.ajax({
            //ajax success stuff
        } else {
             //ajax fail stuff
        }
    });return false;
    },
    rules: {//rules},
    messages: {//messages}
    });
});

尝试使用新的(ish).on调用

$("#FXCMForm").on("click", "#Button1", function(event){
    $("#Form1").validate({
 //all other stuff here   
 });

我已经调用了容器,其中包含动态元素#FXCMForm,事件类型“click”和触发它的元素“#Button1”但是当我单击时,它只是将返回的PHP数据转储到空白页面中,而不是任何ajax的东西。有任何想法吗? 谢谢

1 个答案:

答案 0 :(得分:0)

显然使用“body”作为根元素可以解决问题。嗯