javascript - jQuery 动态元素 - 如何删除元素并保存事件数据?

标签 javascript jquery

一段代码胜过千言万语

// this is our dynamic created element.,
var $test = $('<button>If you add this event is working, if you remove this, and add again, event is not working...</button>');

// this is our event
$test.click(function(){
    alert('Fooobar'); // fires only first time
});
// $test.on('click',function(){ <-- same behaviour

$('#add').click(function(){
    $('#container').append( $test );
});
$('#remove').click(function(){
    $('#container').html(''); // This is destroying all $test events!!!
});

我怎样才能删除元素,重新附加它并保存事件?

JS fiddle :

我想在不破坏事件的情况下删除元素。

最佳答案

我想你在找jQuery's detach method .

The .detach() method is the same as .remove(), except that .detach() keeps all jQuery data associated with the removed elements. This method is useful when removed elements are to be reinserted into the DOM at a later time.

您可以在 $('#container').html(''); 代码之前分离 $test,这样 $test 就可以重新插入所有事件仍然附加。

关于javascript - jQuery 动态元素 - 如何删除元素并保存事件数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448833/

相关文章:

javascript - 在 div 下方对齐 anchor 标记

javascript - 根据用户选择显示摘要而不保存在数据库中

javascript - 在 5 秒内加载后显示不同的背景,然后最终更改它

Javascript 表单验证返回 false 错误

javascript - Angular 手动引导在 IE 10 上不起作用

javascript - Webpack:为什么默认推荐的包最大大小是 244 KiB?

javascript - 通过 javascript/jquery 从 midi Controller 读取输入

javascript - 如何防止 CSS 或 jQuery 中单词和标点符号之间的换行符

jquery - 如何将文本区域滚动条设置为右侧而不改变它的方向

javascript - 将动态生成的字符串从 View 传递到 Controller