我无法在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
方法调用中。
有什么想法吗?
答案 0 :(得分:2)
如果在每个帖子之后调用live
函数,jQuery将继续向DOM添加事件处理程序,因此处理程序将被多次调用。要解决此问题,只需调用live
函数一次,或者如果必须在每个帖子后使用unbind
设置事件处理程序,然后再调用bind
函数(即bind
或更具体的内容,如click
)。