首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >结合了提交事件的jQuery的.on()方法

结合了提交事件的jQuery的.on()方法
EN

Stack Overflow用户
提问于 2013-08-31 16:01:23
回答 3查看 346.6K关注 0票数 121

我和.on()有点问题。我有多个表单元素(使用class="remember"的表单),我还使用AJAX添加了另一个form.remember。所以,我想让它处理提交事件,比如:

代码语言:javascript
复制
$('form.remember').on('submit',function(){...}) 

但是使用AJAX添加的表单不能与之一起工作。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-31 16:06:50

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

代码语言:javascript
复制
$(document).on('submit','form.remember',function(){
   // code
});

$('form.remember').on('submit'的工作原理与$('form.remember').submit(相同,但当您使用$(document).on('submit','form.remember'时,它也适用于后面添加的DOM。

票数 251
EN

Stack Overflow用户

发布于 2016-03-30 01:17:59

我也有同样的症状。在我的例子中,我的提交函数缺少"return“语句。

例如:

代码语言:javascript
复制
 $("#id_form").on("submit", function(){
   //Code: Action (like ajax...)
   return false;
 })
票数 48
EN

Stack Overflow用户

发布于 2019-12-27 05:17:52

这里的问题是,"on“适用于当时存在的所有元素。当您动态创建元素时,需要再次运行on:

代码语言:javascript
复制
$('form').on('submit',doFormStuff);

createNewForm();

// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);

由于表单通常具有名称或ID,因此您也可以将其附加到新表单。如果我要创建很多动态的东西,我会包含一个设置或绑定函数:

代码语言:javascript
复制
function bindItems(){
    $('form').off('submit').on('submit',doFormStuff); 
    $('button').off('click').on('click',doButtonStuff);
}   

因此,每当您创建一些东西(在我的例子中通常是按钮)时,我只是调用bindItems来更新页面上的所有内容。

代码语言:javascript
复制
createNewButton();
bindItems();

我不喜欢使用'body‘或文档元素,因为有了tab和modals,它们往往会挂在那里,做一些你意想不到的事情。我总是尝试尽可能具体,除非它是一个简单的1页项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18545941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档