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