jquery $ .getJSON重复X次

时间:2011-07-13 08:07:50

标签: javascript jquery google-chrome-extension

我无法在jsbin中重新创建问题而没有泄露项目特定的细节(我正在使用API​​中的JSON),但是我遇到了一个我似乎无法解决的问题,并且非常感谢任何帮助或见解。

我从以下标记开始:

我有一个空白的无序列表。

<ul id="results-list">
  <!-- it is blank for now, and will be populated via jQuery -->
</ul>

还有一个输入。

当提交了该输入后,我会运行一些代码,根据JSON响应用数据填充#results-list。一切都很好。在那些数据中,我嵌入了无处可用的链接,使其像侧边栏导航一样(用户点击链接,主要内容区域的内容也相应地改变)。这在第一次工作正常。

然后,我在.live()内部运行了一个匿名函数,用于点击#results-list中的那些链接。

$("#results-list a").live('click', function(){
    // populate the main content area with the correct information.
});

好的,这样第一次就完美了。一旦用户更改了输入中的内容,并重新提交表单,主内容区域中的所有项目都会相应更改,但有两个项目。如果他们再次重新提交表格,则有三个。等等。

因此,主要内容的内容重复了X次,其中X是表单提交的次数。

我意识到这是一个有点模糊的问题,但我想知道是否有人对可能发生的事情有任何指示?这一切都发生在正常的$.getJSON方法调用中。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果在每个帖子之后调用live函数,jQuery将继续向DOM添加事件处理程序,因此处理程序将被多次调用。要解决此问题,只需调用live函数一次,或者如果必须在每个帖子后使用unbind设置事件处理程序,然后再调用bind函数(即bind或更具体的内容,如click)。