jQuery无法识别.get请求中的类更改

时间:2013-04-23 16:16:24

标签: javascript jquery getjson

我从node.js服务器获取一些数据,这会影响我的某些元素的类。

$.get('/example', function (data)
{
//changes element 1 to .newclass from .oldclass
});

不幸的是,get请求之外的事件处理程序无法识别更新的类。

$('.oldclass').click(function ()
{
//affects both element 1 and 2
});

如果我将click事件处理程序嵌入get中,则问题不再存在。我怀疑这与异步请求有关,但我不完全确定。有人可以向我解释为什么会发生这种情况以及如何在不将代码嵌入到每个get请求中的情况下解决它?

1 个答案:

答案 0 :(得分:4)

您应该使用事件委派:

$('body').on('click', '.oldclass', function() { /* whatever */ });

通过这样做,您可以使用“oldclass”捕获元素上的事件,而不管DOM的动态更新。使用您的代码,您在代码运行的时刻找到了“oldclass”的元素。如果元素随后发生变化,那些事件处理程序就不会消失。

没有必要将委托事件处理程序挂在body元素上,但这是最简单的事情。通常,它可以是任何适当的父元素,它将处理匹配后代的事件。