0

我有一个表单,一旦提交,就会使用$('#search_form').submit(function(){# execute code here});. 稍后在代码中,我将表单的 id 更改为$('#search_form').attr('id', 'tags_form');. 然后,当该表单被触发时,我有一个不同的代码块。问题是当我使用新 id 提交表单时,它仍然会触发旧的.submit().

4

2 回答 2

3

更改id元素的 不会从中删除现有的处理程序。先解绑:

$('#search_form').unbind('submit');
于 2013-06-28T17:59:47.547 回答
1

当然是的,因为当您tags_form在启动时使用新 id 绑定事件时,它不仅存在。所以事件绑定在那里无效。

而是尝试使用事件委托或在更改 id 后绑定事件,或为元素分配类名并将事件绑定到类名而不是 id。

$(document).on('submit', '#tags_form, #search_form', function(){# execute code here});

或者:

$('.myFormClass').submit(processForm); //where the classname on form is myFormClass

或者:

假设你的事件是这样的:

$('#search_form').on('click', processForm); // or $('#search_form').click(processForm);

之后:

// some code...
$('#search_form').off('submit'); // unbind the handler  or  $('#search_form').unbind('click');
//In the Code block that changes the id
$('#tags_form').on('submit', processForm); // bind the handler to new element
于 2013-06-28T17:55:12.033 回答