我在一个容器中有几个元素。它们的所有事件都在一个函数内处理events()
。
单击容器内的按钮时,我将容器的 html 替换为来自 AJAX 请求的响应。
function events() {
$(".btn").on("click", function() {
...
});
$(".txt").on("keyup", function() {
...
});
$(".btn2").on("click", function() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
$(".container").html(xmlhttp.responseText);
events(); // ***
}
}
url = 'handlers/gethtml.ashx';
xmlhttp.open("GET", url, true);
xmlhttp.send(null);
});
}
现在,我需要用事件重新绑定所有控件,因此在更改 html 后, $(".container").html(xmlhttp.responseText);
我在自身内部调用函数,因为新的 html 包含具有相同事件的相同控件。
这会导致堆栈溢出吗?我有一些性能问题,所以我想知道这是否可能是原因。此外,是否有任何解决方法,也许是一种更优雅的方式来做到这一点?