javascript - 从 DOM 中删除 $object 而不从该对象中删除绑定(bind)的事件监听器

标签 javascript jquery

假设我有一些带有绑定(bind)事件的 jQuery 对象,我正在容器内交换这些对象

var $obj1 = $('<button type="button">Button 1</button>');
$obj1.click(function() { console.log("Button 1 clicked") });

var $obj2 = $('<button type="button">Button 2</button>');
$obj2.click(function() { console.log("Button 2 clicked") });

$("body").html($obj1);

//here the $obj1 click event listener is removed from $obj1
$("body").html($obj2);

//here nothing happen when I click on the Button 1
$("body").html($obj1);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

有没有一种方法可以添加/删除 jQuery 对象而不必每次都绑定(bind)事件监听器?

最佳答案

您可以更改选择/创建监听器的方式

$('body').on('click','button',function(){});

我建议添加一个类或其他方式来确定您要查找的类:

 $('body').on('click','button.first-button',function(){});

关于javascript - 从 DOM 中删除 $object 而不从该对象中删除绑定(bind)的事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51545946/

相关文章:

javascript - 如何使用 jQuery 将每 4 个元素移动到另一个容器?

javascript - 如何将此原始 javascript 转换为 jQuery

javascript - 跨像素的统一颜色?

javascript - 创建一个可扩展以与中心元素的边缘相交的流动侧边栏

javascript - 该值未插入到文本框中,它在两天前工作?

javascript - 如何按照发送请求的顺序将获取响应数据分配给数组

javascript - 更改边框宽度而不移动其他表格元素

javascript - 为什么 JQuery .empty() 不起作用?

javascript - 将数据设置为对象属性

javascript - 要根据条件显示的图库图像