我有一个表单,一旦提交,就会使用$('#search_form').submit(function(){# execute code here});
执行一些JQuery。稍后在代码中,我使用$('#search_form').attr('id', 'tags_form');
更改表单的ID。然后,当触发该表单时,我有一个不同的代码块。问题是,当我使用新ID提交表单时,它仍会触发旧的.submit()
。
答案 0 :(得分:3)
更改元素的id
不会从中删除现有处理程序。首先取消绑定:
$('#search_form').unbind('submit');
答案 1 :(得分:1)
当然是的,因为当您在启动时使用新的ID tags_form
绑定事件时,它不仅存在。所以事件绑定在那里没有效果。
而是尝试使用事件委托或在更改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