背景:我的网站上有一些值可以通过 JavaScript 和 Ajax 进行编辑。Ajax 工作正常,我可以编辑值,但是在保存值后,如果不重新加载页面,我就无法再次编辑它。
我将问题简化为:原始元素被替换为 HTML 表单。提交表单时,表单本身被新版本的显示元素替换,但事件监听器被破坏。
我将一些示例 JS 代码 ( JSfiddle ) 放在一起,但它并没有像我预期的那样工作。
var text = $('<em/>').text('click me!');
text.click(function() {
var button = $('<input type="button" value="Click me, too" />');
button.click(function() {
$('#container').html(text);
});
$('#container').html(button);
})
$('#container').html(text);
会发生什么:
- 当前值显示
- 在 text
click
ed 文本替换为表单之后(为简单起见保存文本元素) - 按钮
click
文本再次显示后 click
on text 再次像第 2 步一样工作(现在不起作用)
为什么再次click
使用text
对象时会丢失事件?