【发布时间】:2011-07-13 16:35:29
【问题描述】:
我无法在 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 方法调用中。
有什么想法吗?
【问题讨论】:
-
有没有机会在每次发帖后调用
live函数? -
您为自己诊断问题做了哪些工作?您是否检查了来自
$.getJSON电话的回复并确认您得到了您认为每次通话应该得到的结果?知道代码中的问题出在哪里会更容易修复它。 -
……就是这样。我觉得非常愚蠢。谢谢格雷厄姆!如果您想让您的评论成为答案,我会投票并标记为正确!
-
那么您是说取决于页面刷新了多少次,然后单击结果列表中的某个项目正在运行相同次数的填充函数?也许做 $("#results-list a").die();以确保没有事件已附加到这些列表项。
-
大家好,感谢您发布 cmets!格雷厄姆提出了我在错误的位置设置实时功能的观点,并且修复了它。谢谢!
标签: javascript jquery google-chrome-extension