Javascript 将处理程序从jquery元素附加到其他元素

Javascript 将处理程序从jquery元素附加到其他元素,javascript,jquery,html,dynamically-generated,Javascript,Jquery,Html,Dynamically Generated,我有一个jquery处理程序附加到页面中的表单。然后动态加载一些组件,这些组件可能包括一个表单,该表单应该得到相同的jquery处理程序 我知道这一点,我应该使用.live()或.on()将处理程序附加到这个动态加载的组件,我已经在其他地方成功地应用了这一技术 但是,在本例中,我发现很难使用.on(),因为我不想再次为新表单编写代码。可以告诉一个元素应用与另一个相同的处理程序吗 这是我的代码结构 $(".myForm").submit( function() { aler

我有一个jquery处理程序附加到页面中的表单。然后动态加载一些组件,这些组件可能包括一个表单,该表单应该得到相同的jquery处理程序

我知道这一点,我应该使用.live()或.on()将处理程序附加到这个动态加载的组件,我已经在其他地方成功地应用了这一技术

但是,在本例中,我发现很难使用.on(),因为我不想再次为新表单编写代码。可以告诉一个元素应用与另一个相同的处理程序吗

这是我的代码结构

$(".myForm").submit(
            function() { alert("do stuff");}
      );

$(".loadPage").click(
       function() {
             $.post( "my_url.php",
        "my_var = " + my_var, 
                 function( data) {
                                //data may contain a form, that is supposed to behave just as myForm
               $("#container").html( data );

                           //now I shoudl be able to apply the handler, but I´m not sure how
                           $("#container .myForm").submit( sameHandler ); 
                      }
               }
      );
所以,我不知道,也不知道如何定义“sameHandler”。
顺便说一句,动态加载的表单确实有“myForm”类(如果有帮助的话),但我不知道是否有任何方法可以“刷新”动态加载元素上的jQuery指令。

您可以将提交事件添加到文档中,并将其与选择器耦合

$(document).on("submit", ".myForm", function(){alert("do stuff");});
您还可以声明一个可以在多个位置使用的函数变量

var sameHandler = function() {
    alert("do stuff");
};

$(".myForm").submit(sameHandler);
$("#container .myForm").submit(sameHandler);

您可以将函数分配给变量,并在以后使用变量名调用该函数。只需确保它位于可以从$.post()访问的范围内。此外,使用.on()几乎总是与.submit()或.click()等一样快


$(document).on('submit','.myForm',function(e){…})
如果你想让别人帮你回答问题,请格式化你该死的代码。。。它看起来既恐怖又丑陋。遵循更大的javascript社区的常规做法,以便更具可读性。
var submitHandler = function() {
  alert("do stuff");
};

$(".myForm").on('submit', submitHandler);

$(".loadPage").click(function () {
  $.post("my_url.php", "my_var = " + my_var, function (data) {
    $("#container").html(data);
    $("#container .myForm").on('submit', submitHandler);
  });
});