使用 jquery .live() 与当前和未来的 DOM 一起工作

usage of jquery .live() to work with both present and future DOM

本文关键字:未来 DOM 工作 一起 live jquery 使用      更新时间:2023-09-26

我有我的jQuery代码

$('#tarea').click(function() {
     // Do stuffs
});

这对于与此脚本一起加载的按钮 #tarea 工作正常。如果按钮 #tarea 将来使用 ajax 加载,则上面的代码不起作用。

现在我将代码更改为

$('#tarea').live('click', function() {
     // Do stuffs
});

这一次,如果与脚本一起加载,则按钮 #tarea 不起作用。但是,如果使用 ajax 生成,则该脚本可以使用该按钮。

我如何编写脚本,以便在这两种情况下它都能工作?

.live()这两种

情况下都有效,无需执行任何额外的操作。 我会检查您的代码中是否有其他一些问题可以阻止这种情况发生。

重要提示:要检查的一件事是确保您的.live()事件已绑定,并且它不依赖于其他事件的发生。发布JavaScript文件的重要部分可能会有所帮助。就我个人而言,我喜欢在全球范围内宣布我的.live()活动。

我做这样的事情:

// this is what I mean by global because it is outside the document.ready
$("#test").live("click", function() {
    // do stuff
});
$(function() {
    // do stuff when document is ready
});

如果你想证明我上面所说的,你只需要把按钮和.live()的JavaScript代码放在一个新的HTML文件中。

你把:

$('#tarea').click(function() {
     // Do stuffs
});

在函数中。

当你通过ajax加载时,你在.load()的第二个参数中添加一个回调函数(上面的那个)

例如:

.load(target_url, function() { $('#tarea').click(function() { blablabla; }})