Javascript 从函数本身调用函数
容器中有几个元素。它们的所有事件都在函数events中处理 单击容器内的一个按钮,我就用AJAX请求的响应替换容器的htmlJavascript 从函数本身调用函数,javascript,jquery,Javascript,Jquery,容器中有几个元素。它们的所有事件都在函数events中处理 单击容器内的一个按钮,我就用AJAX请求的响应替换容器的html function events() { $(".btn").on("click", function() { ... }); $(".txt").on("keyup", function() { ... }); $(".btn2").on("click", function() {
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.htmlxmlhttp.responseText;我调用函数本身,因为新的html包含具有相同事件的相同控件
这会导致堆栈溢出吗?我有一些性能问题,所以我想知道这是否是原因。另外,是否有任何解决方法,或者更优雅的方法来实现这一点?使用事件委派,然后无需重新绑定事件,因为它也将处理动态元素 通过使用jquery加载url内容,可以进一步缩短代码
function events() {
var ct = $(".container");
ct.on("click", ".btn", function() {
});
ct.on("keyup", ".txt", function() {
});
ct.on("click", ".btn2", function() {
ct.load('handlers/gethtml.ashx')
}
使用事件委派,则无需重新绑定事件,因为它也将处理动态元素 通过使用jquery加载url内容,可以进一步缩短代码
function events() {
var ct = $(".container");
ct.on("click", ".btn", function() {
});
ct.on("keyup", ".txt", function() {
});
ct.on("click", ".btn2", function() {
ct.load('handlers/gethtml.ashx')
}
尝试使用事件委派,无需再次绑定事件
$(".container").on("click",".btn2", function() {...});
尝试使用事件委派,无需再次绑定事件
$(".container").on("click",".btn2", function() {...});
打电话就行了。它在范围之内
不过,您需要注意以下几点:
已经存在的元素在第二次运行时将有两个单击处理程序-旧的和新的。例如,要消除它们,请使用“取消绑定”取消绑定所有单击事件。
您可能希望进一步拆分事件创建函数。
打电话就行了。它在范围之内
不过,您需要注意以下几点:
已经存在的元素在第二次运行时将有两个单击处理程序-旧的和新的。例如,要消除它们,请使用“取消绑定”取消绑定所有单击事件。
您可能希望进一步拆分事件创建函数。
$.container.on要好得多。@JamesMontagne不是$.container.on,与var ct=$.container相同;ct.on?@enb081答案已被编辑。它是$document.on.$.container.on要好得多。@JamesMontagne与var ct=$.container不同,它不是$.container.on;ct.on?@enb081答案已被编辑。它是$document.on.if check if window.XMLHttpRequest{如果您没有在else中检查activeX,则没有任何意义。而且您正在使用jQuery,那么您到底为什么不使用$.get?只是想知道-当您使用jQuery时,为什么要使用本机XMLHttpRequest?使用$。ajax@epascarello我对ajax不太了解,只要需要,我就复制相同的代码。从现在开始,我将使用$.gete if检查是否window.XMLHttpRequest{如果您没有在else中检查activeX,则没有任何意义。而且您正在使用jQuery,那么您到底为什么不使用$.get?只是想知道-当您使用jQuery时,为什么要使用本机XMLHttpRequest?使用$。ajax@epascarello我对ajax不太了解,只要需要,我就复制相同的代码。从现在开始,我将使用$.get