Javascript jQuery表单处理,如何在回调时重新分配函数?

Javascript jQuery表单处理,如何在回调时重新分配函数?,javascript,jquery,forms,Javascript,Jquery,Forms,我用这个来处理一个电子邮件地址。如果在PHP脚本中失败,表单将在“.mailinglistform”中发送回,其中包含一个新表单和一些解释错误的文本。我遇到的问题是,即使按钮在回调表单中具有“.mailbutton”类,按钮在单击时也不会执行任何操作 这是因为jQuery只在第一次识别它吗?如果是的话,是否有办法“重新加载”mailbutton。单击回调函数 谢谢 为此,可以将AJAX与JQuery结合使用。或者您可以使用alos userload() 为此,可以将AJAX与JQuery结合使用

我用这个来处理一个电子邮件地址。如果在PHP脚本中失败,表单将在“.mailinglistform”中发送回,其中包含一个新表单和一些解释错误的文本。我遇到的问题是,即使按钮在回调表单中具有“.mailbutton”类,按钮在单击时也不会执行任何操作

这是因为jQuery只在第一次识别它吗?如果是的话,是否有办法“重新加载”mailbutton。单击回调函数


谢谢

为此,可以将AJAX与JQuery结合使用。或者您可以使用alos user
load()


为此,可以将AJAX与JQuery结合使用。或者您可以使用alos user
load()

用于绑定单击事件。当控件在回调函数中再次呈现时,其事件将被删除。使用on而不是click可以自动重新绑定事件

$(".mailbutton").click(function() {
        $.ajax({                                      
              url: 'api.php', // Put your calling page path here
              data: "",
              dataType: 'json',
              success: function(data)
              {
                //do whatever you want to do on success
              } 
        });
    });
用于绑定单击事件。当控件在回调函数中再次呈现时,其事件将被删除。使用on而不是click可以自动重新绑定事件

$(".mailbutton").click(function() {
        $.ajax({                                      
              url: 'api.php', // Put your calling page path here
              data: "",
              dataType: 'json',
              success: function(data)
              {
                //do whatever you want to do on success
              } 
        });
    });

您是对的,因为您只呈现了页面的一部分,所以您之前编写的jQuery没有注册到您所呈现的“new”mailbutton类。要解决此问题,您应该使用,例如:


在这种情况下,包装器需要是一个类元素,它位于页面的重新呈现部分之外(例如“内容”类,可能是表单周围的类,等等),并且是一个经常出现的元素(即在ajax调用中不重新呈现)。这将把onclick处理程序附加到作为包装类的子类的任何.mailbutton类,无论它们在呈现页面时存在,还是以后添加到DOM。

您是对的,因为您只呈现页面的一部分,所以您编写的上一个jQuery不会注册到“new”已呈现的mailbutton类。要解决此问题,您应该使用,例如:


在这种情况下,包装器需要是一个类元素,它位于页面的重新呈现部分之外(例如“内容”类,可能是表单周围的类,等等),并且是一个经常出现的元素(即在ajax调用中不重新呈现)。这会将onclick处理程序附加到作为包装类子类的任何.mailbutton类,无论它们在呈现页面时存在,还是以后添加到DOM。

这似乎没有效果,您是否希望单击此按钮#mailinglistform?on()的特定用法将失败,根据文档,“事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on()时存在于页面上。”有关更多详细信息,请参阅直接事件和委派事件-在@joe coleman的案例中,他需要使用委派事件。这似乎没有任何效果,是否希望单击此按钮#mailinglistform?on()的特定用法将失败,因为根据文档“事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on()时存在于页面上。”有关详细信息,参考直接事件和委托事件-在@joe coleman的案例中,他需要使用委托事件。$(“.wrapper”)。在('click','.mailingfield',function()上,您是指$(“.wrapper”)。在('click','.mailbutton',function()上其中mailbutton是我要将click函数添加到的类元素。是的,抱歉-修复了该问题。这是委托事件…即,对作为包装器类的子类的mailbutton类的所有单击都将触发该函数。$(“.wrapper”)。on('click','.mailingfield',function(),您是指$(“.wrapper”)。on('click'、'.mailbutton',function(),其中mailbutton是我要将click函数添加到的类元素。是的,抱歉-修复了该问题。这是委托事件…即,对包装类的子类mailbutton类的所有单击都将触发该函数。
 $(function(){

    $(".mailbutton").on("click", function() {
    var email = $(".mailingfield").val();
    $.post("/PHP_scripts/mailinglist.php", { email: email }, function(data) {
        var content = $(data).find("#mailinglistform");
        $("#box").empty().append(content);         
    });
    });
});
$(".wrapper").on('click', '.mailbutton', function() {
  var email = $(".mailingfield").val();
  $.post("/PHP_scripts/mailinglist.php", { email: email }, function(data) {
        var content = $(data).find("#mailinglistform");
        $("#box").empty().append(content);
  });
 });