如何在ajax调用后删除和重新加载jQuery / javascript函数

How to delete and reload jQuery / javascript functions after ajax call

本文关键字:加载 jQuery 函数 javascript 新加载 ajax 调用 删除      更新时间:2023-09-26

假设我有这样的代码:

<div id="content">
</div>

和我使用一个简单的ajax请求填充数据的内容,当我点击一些按钮

工作
    $.get("page?num=" + pageNumber, function(data){
                $("div#content").html(data);
});

一次数据将为

<div id="Data1">
</div>

,其他时候是

<div id="Data2">
</div>

对于每个id我有不同的jquery函数。比如:

$('#Data1').click(function(){});

有些功能相似,有些功能不同。

我的问题 -如果我点击按钮,我加载我需要的所有脚本。当我单击另一个按钮时,我需要再次加载新内容的脚本,,但是与以前的内容相关的旧函数会发生什么?每次我点击我加载新的脚本而不删除最后的。

我如何正确删除/管理我的脚本?

谢谢,阿龙

我不确定是否理解了你的问题。你在期待像

这样的东西吗?
$("div#content").html(""); // deleting existing data
$("div#content").html(new_data); //loading new data

当事件被调用时,jQuery将事件绑定到DOM对象(divs)。这意味着它查找具有给定ID的元素,然后将其绑定。由于运行脚本时Edit1和Edit2不存在,因此不绑定它们。

您可以尝试在每次更改它们的ID时绑定它们。

function rebind() {
    $('#content').click(function(){});
    $('#Data1').click(function(){});
    $('#Data2').click(function(){});
}

在div中加载新内容时调用。

Gurung关于事件处理程序的观点是正确的,但是从jQuery 1.7开始,.live()方法已被弃用。使用.on()来附加事件处理程序。

(我不能把这个信息作为评论发布,所以它必须是一个新的答案,抱歉)

May应该直接使用.live()功能。

描述:为所有匹配当前选择器的元素附加一个事件处理程序,现在和将来都是如此。