2011-07-13 44 views
0

我無法在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方法調用中。

任何想法?

+2

你在每個帖子後都打電話給'live'函數嗎? –

+0

你爲自己診斷問題做了些什麼?您是否檢查過您的'$ .getJSON'調用的回覆,並確認您獲得了您認爲應該針對每次調用的內容?知道問題出現在你的代碼中會使修復它變得更容易。 –

+0

......就是這樣。我感到非常愚蠢。謝謝格雷厄姆!如果您想讓您的評論成爲答案,我會加註並標記爲正確! – Connor

回答

2

如果在每個帖子後面調用live函數,jQuery將會不停地向DOM添加事件處理程序,因此該處理程序將被多次調用。爲了解決這個問題,無論是調用live函數一次,還是在每個帖子使用unbind,然後bind函數(即bind或更具體的click)之後必須設置事件處理程序。