Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确保jQuery中的onclick事件应用于类的新更新元素?_Javascript_Jquery_Asynchronous - Fatal编程技术网

Javascript 如何确保jQuery中的onclick事件应用于类的新更新元素?

Javascript 如何确保jQuery中的onclick事件应用于类的新更新元素?,javascript,jquery,asynchronous,Javascript,Jquery,Asynchronous,我的页面上有一组带有类应用上下文链接的链接——只有一些菜单元素 当页面从JSON接收的某些数据加载时,会生成这些数据 然后,我应用以下单击jQuery函数,以确保当用户单击其中一个元素时,执行特定的过程: $(".app-context-link").on('click', function(e) { e.preventDefault(); // do something } 问题是,当用户单击其中一个项目时,我想突出显示他们单击的项目,对

我的页面上有一组带有类
应用上下文链接的链接
——只有一些
菜单元素

当页面从JSON接收的某些数据加载时,会生成这些数据

然后,我应用以下单击jQuery函数,以确保当用户单击其中一个元素时,执行特定的过程:

    $(".app-context-link").on('click', function(e) {
         e.preventDefault();
          // do something
    }
问题是,当用户单击其中一个项目时,我想突出显示他们单击的项目,对JSON执行一些操作,然后向用户返回一个新菜单,该菜单具有相同类的其他元素
app context link
——在这种情况下,“old”onclick函数不适用于新添加的项目,对吗?然后我就不能让他们也这么做了

有人知道我如何解决这个问题吗

我知道我可能必须非常小心地用回调等方法重写所有内容,但也许jQuery中已经有了一个更简单的解决方案,我只是缺少了一些东西

作为一个奖励,如果我决定保持菜单的原样,只是突出显示单击的元素(通过附加一个类),我会怎么做?抱歉,如果最后一个问题听起来很愚蠢,但我是个新手,感觉有点困惑


谢谢大家!

您需要委派事件,例如:

$(document).on('click', ".app-context-link", function(e) {
         e.preventDefault();
          // do something
    });
现在,选择器将在每次单击时过滤


文档
就是一个例子,通常,您希望将其绑定到最近的静态容器

您需要委托事件,例如:

$(document).on('click', ".app-context-link", function(e) {
         e.preventDefault();
          // do something
    });
function bindLink() {
    $(".app-context-link").click(function() {
          // do something
    });
}
现在,选择器将在每次单击时过滤

document
就是一个例子,通常,您希望将其绑定到最近的静态容器

function bindLink() {
    $(".app-context-link").click(function() {
          // do something
    });
}
现在,每次更改数据时,都可以调用绑定函数(bindLink())


现在,每次更改数据时,都可以调用绑定函数(bindLink())。

这会将多个事件绑定到页面上的现有元素。为了防止出现这种情况,您需要使用
.on()
进行绑定,以便在重新绑定之前,可以先调用
.off()
,在添加新的事件处理程序之前删除以前的事件处理程序。这将多个事件绑定到页面上的现有元素。为了防止出现这种情况,您需要使用
.on()
进行绑定,以便在重新绑定之前,可以先调用
.off()
,删除以前的事件处理程序,然后再添加新的事件处理程序。