2011-07-05 32 views
1

我有一些編輯鏈接,它們在編輯表單上進行遠程拖拽,這個編輯表單在一個疊加層中提出。爲了給用戶提供反饋,我有一個跨度,在撥打電話時取代原來的編輯測試儀鏈接。完成後,量程將被正確移除。問題是,當再次點擊相同的鏈接2 '想'跨度出現。再次點擊3時出現,依此類推。Ajax加載器處理問題

任何人都可以建議爲什麼這是以及如何解決它基於下面的示例代碼?

我很明顯只要按下「思考」範圍就會出現,而不是依賴於點擊次數的多重性。

任何指針將不勝感激!

$('a.edit-tester').click(function() { 
    $(this).bind('ajax:beforeSend', function() { 
    $(this).toggle(); 
    $(this).after('<span class="thinking">Thinking</span>'); 
    }).bind('ajax:success', function() { 
    $('span.thinking').remove(); 
    $(this).toggle(); 
}).bind('ajax:error', function(){ 
    $('span.thinking').remove(); 
    $(this).toggle(); 
    }); 
}); 

我唯一的猜測是,實際「想」的跨度不被從DOM中刪除。除此之外,這是任何人的猜測...

編輯:編輯上面的代碼的第一行...我忘了改變它回來之後搞亂它。

回答

1

您將發送事件的其他副本綁定到每次單擊鏈接。看看如何

$(this).bind('ajax:beforeSend', function() {...} 

實際上是每次點擊鏈接?你可以將該塊移到父函數之前或之後,它可以正常工作。

編輯:爲了澄清,你似乎將所有的事件鏈接到一個表達式。鏈接jQuery是強大的,但這不是它的目的。如果沒有看到您的更多來源,我不能提出一個具體的實施,但只是增加了「思」 DIV這將做的工作:

$('a.edit-tester').live('click', function() { 
    $(this).toggle(); 
    $(this).after('<span class="thinking">Thinking</span>'); 
} 
+0

是啊,你說得對,沒有理由綁定點擊後的功能被執行。我刪除了.click調用,現在它都可以工作。非常感謝! – shyvy88

+0

愚蠢的初學者錯誤:) – shyvy88

+0

沒問題。當我開始使用jQuery時,我犯了同樣的錯誤 - 考慮到jQuery文檔中鏈接的使用有多強烈,這非常容易,他們爲此感到非常自豪。 ;)巧合的是,如果我已經幫助了你,除了接受它之外,還可以投票選出帖子,儘管這不是必需的。無論如何,歡迎來到Stack Overflow。 –