阻止删除在准备就绪的文档上分配的处理程序
Prevent handlers assigned on document ready from being removed
在页面加载时,我正在生成几个跨度并将其附加到div。
HTML结构,如:
<div id="holder">
<div id="grid"></div>
</div>
然后循环并将跨度附加到嵌套的div:
$span = $('<span />').attr('class', 'colorSquare');
$("#grid").append($span);
然后,我想点击一个按钮,用重置(删除最初附加的跨度,因为我不想重新应用跨度)div中的内容
$("#holder > div").html("");
在div内部的初始页面加载/初始生成跨度时,click
事件处理程序将注册到document.ready
上的div的跨度中,并且以下工作:
$("#grid span").click(function () { console.log("working"); });
但是,使用$("#holder > div").html("");
重置后,单击处理程序不起作用。我认为这是因为处理程序只在初始文档就绪时分配,但我不希望在重置div的内容后删除所有处理程序。如何防止已分配的处理程序被删除?
这是因为您正在将单击处理程序分配到已添加到#grid
的span
元素上。清除#grid
时,也会删除span
,因此会丢失单击处理程序。一旦创建了另一个span
,您就必须重新分配处理程序,或者使用与未删除的元素绑定的备用处理程序(如#grid
):
$('#grid').on('click', 'span', function() { console.log("working"); });
这个替代方法使用jQuery的on
方法,并将处理程序绑定到#grid
元素。但是,第二个参数标记您只关心单击span
元素,这些元素是#grid
的子元素。
相关文章:
- 使用Javascript中的回调处理变量分配
- jQuery在页面加载时分配点击事件处理程序
- 处理对象数组并将它们以 4 个为一组进行分配
- jQuery表单处理,如何在回调时重新分配函数
- 内联事件处理程序与基于脚本的处理程序分配
- 将事件处理程序分配给元素集合
- 更改自定义绑定处理程序,以便使用IIFE进行分配
- 未调用通过 onclick 属性分配的处理程序
- 事件处理程序分配和内存泄漏
- 如何将 JQuery 事件处理程序分配给特定事件
- 自动将事件处理程序分配给新元素
- 在点击事件中分配点击事件处理程序
- 阻止删除在准备就绪的文档上分配的处理程序
- 如何将不同的事件处理程序分配给元素及其父级
- 我应该如何处理Resharpers检查器提示'使用可能未分配的属性或全局变量'
- 2个事件处理程序分配之间的差异
- 为剑道调度程序更新/重新分配创建KO绑定处理程序
- 处理容器'没有分配点击和焦点事件的一切
- 处理程序中的变量没有被重新分配
- 纸张标题-面板-为事件内容分配处理程序-手动滚动