如何重新初始化已从DOM中删除的按钮
How to reinitialize button that has been removed from the DOM?
所以我在使用一个名为XCrud的程序时遇到了一个问题,该程序应该有助于数据库管理。问题的要点是,该程序删除了按钮并将其重新插入DOM,导致JQuery中的单击函数停止工作。
$('a[class="btn btn-warning xcrud-action"]').on('click', function() {
intvId = window.setInterval(cleanup, 200);
});
该按钮应该重置一个间隔,以帮助用户了解数据库的工作流程,但如上所述,该按钮只会触发一次。
感谢大家的帮助
改为使用此语法,将事件处理程序委派给该类的所有成员,包括现在和将来:
$('parent').on('click', 'a.btn.btn-warning.xcrud-action', function() {
intvId = window.setInterval(cleanup, 200);
});
其中parent是DOM树中比目标a
元素更高的元素。(我假设使用此选择器,您的示例中的所有类都应用于单个a
元素。)此语法取代了旧的delegate
方法。
关键是,您将处理程序附加到一个不会来来去去的元素上(无论DOM多么不稳定,如果必须的话,您都可以使用document
),并对元素应用过滤器(就选择器而言),以仅将处理程序应用于所需的包含元素的类型。正如文件所述:
委托事件的优点是,它们可以处理以后添加到文档中的子元素中的事件。通过选择在附加委托事件处理程序时保证存在的元素,可以使用委托事件来避免频繁附加和删除事件处理程序。
不幸的是,文档也未能阐明on
方法的[selector]
参数将处理程序委托给选择器中类的成员。您可以通过查看旧的delegate
文档,并检查它们提供的从delegate
转换为on
的示例来发现这一点。
这里有一个小的工作示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
Test
</title>
<!--jQuery and jQuery-UI files-->
<script src="includes/jquery/jquery-2.2.3.js"></script>
<script src="includes/jquery-ui/external/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('form').on('click', 'button.test1.test2', function(e, ui){
$('form').append('<button type="button" class="test1 test2">"Test"</button>')
alert('click');
});
});
</script>
</head>
<body>
<form>
<button type="button" class="test1 test2">Test</button>
</form>
</body>
</html>
任何新按钮都将具有与原始按钮相同的行为。
相关文章:
- JS动态添加字段-删除按钮不起作用
- 删除按钮并在单击时进行分配
- 如何根据某些条件向可编辑的jquery数据表添加或删除按钮
- 如何在图像右上角显示删除按钮
- 克隆字段上的“添加-删除”按钮
- jTable条件显示隐藏基于数据所有者的编辑和删除按钮
- 如何隐藏剑道网格命令的编辑按钮或删除按钮
- 悬停事件上的删除按钮
- 使用node.js更新和删除按钮
- 禁用编辑和删除按钮在IE9中不起作用,但在IE11中起作用
- 当我以带有编辑和删除按钮的表单提交时,显示所有值
- 使用 jquery 在函数中添加删除按钮
- 如何在使用Angular.js打开新行后添加删除按钮
- 剑道网格隐藏/显示删除按钮
- 数据表删除按钮在其他页面上不起作用,除了第一个
- 如何禁用和启用删除按钮,如果未在 GridView 中选中复选框由 Jquery
- 当 AJAX 加载内容时,喜欢和删除按钮不起作用
- 如何在 JSP 中的“单击”复选框时创建删除按钮
- Jquery:如何将图像添加到删除按钮
- 为什么我的删除按钮不起作用