jQuery';与submit事件相结合的s.on()方法

jQuery';与submit事件相结合的s.on()方法,jquery,ajax,forms,submit,Jquery,Ajax,Forms,Submit,我对()上的.on有问题。 我有多个表单元素(带有class=“memory”)的表单),我还添加了另一个表单。 所以,我想让它处理提交事件,比如: $('form.remember').on('submit',function(){...}) 但是使用AJAX添加的表单不适用于它 问题在哪里?这是一个bug吗?您需要将事件委托给文档级别 $(document).on('submit','form.remember',function(){ // code }); $('form.m

我对()上的
.on
有问题。 我有多个表单元素(带有
class=“memory”
)的表单),我还添加了另一个
表单。
所以,我想让它处理提交事件,比如:

$('form.remember').on('submit',function(){...}) 
但是使用AJAX添加的表单不适用于它


问题在哪里?这是一个bug吗?

您需要将事件委托给文档级别

$(document).on('submit','form.remember',function(){
   // code
});

$('form.memore')。在('submit'
上与
$('form.memore')工作相同。提交(
但是当您使用
$(document)时。在('submit','form.memore'
上,它也适用于以后添加的DOM。

我对相同的符号有问题。 在我的例子中,我的submit函数缺少“return”语句

例如:

$(“#id_表单”)。在(“提交”,函数()上{
//代码:动作(比如ajax…)
返回false;
})

这里的问题是“开启”应用于当时存在的所有元素。动态创建元素时,需要再次运行开启:

$('form').on('submit',doFormStuff);

createNewForm();

// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
由于表单通常有名称或ID,您也可以附加到新表单。如果我正在创建大量动态内容,我将包括一个设置或绑定函数:

function bindItems(){
    $('form').off('submit').on('submit',doFormStuff); 
    $('button').off('click').on('click',doButtonStuff);
}   
所以,每当你创建一些东西时(我的例子中通常是按钮),我就调用bindItems来更新页面上的所有内容

createNewButton();
bindItems();

我不喜欢使用“body”或document元素,因为在选项卡和modals中,它们往往会挂在一起,做一些你不期望的事情。除非是一个简单的单页项目,否则我总是尽量具体一些。

try
$(document)。on('submit','form.memory',function(){…})
@Sergio将
文档
替换为最接近的静态父对象。同时请记住,
$(document).on
的性能远低于
$('form.membere')。on('submit'
。它现在必须侦听文档中的所有提交事件。如果可能的话,$('body')。在('submit','form.memory',function(){//code})上稍微限制范围比在
文档上侦听
要好得多;在('submit','form memory',function(){//code})上解决了我的问题,即使@Liam是正确的,$(文档).on对于ajax呈现元素上的CRUD操作仍然很有用。请注意,
返回false;
不会提交表单。提交表单时,请使用
返回true;
。不是真的。而是使用$(document)。on('submit','form',function(e){…});那么就不需要“重新附加”了,我明确地说我不喜欢在全局文档级别上执行。对于一个小的单页项目,这可能很好;但是如果有很多不同的模块都有自己的表单全局处理程序,那么如果您的代码不是针对特定表单的,则会产生很多额外的单击和调试问题。