2010-10-15 161 views
4

如何讓jQuery只執行一次ajax查詢?只執行一次jQuery ajax查詢

現在它接觸到服務器的每一個用戶切換「評論(X)」

// Replies - Toggle display of comments 
$('.info .reply').click(function() { 
    $('.reply', this.parentNode.parentNode).toggle(); 
    return false; 
}); 

// Load comments 
$('.info .reply', this).mousedown(function() { 
    var id = $('form #id', this.parentNode.parentNode).val(); 
    $.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json', 
     success: function(data) { 
      for (var i in data) { 
       // Do AJAX Updates 
      } 
     } 
    }); 
    return false; 
}); 

我想我能以某種方式把解除綁定()事件在AJAX加載數據後這裏的時候,但我不知道在哪裏!

感謝您的幫助!

+0

這將是你以後的循環,不是嗎? – greg0ire 2010-10-15 22:29:01

回答

5

success功能的for循環似乎是一個好地方了。

success: function(data) { 
     for (var i in data) { 
      // Do AJAX Updates 
     } 
     $('.info .reply').unbind(); 
    } 

編輯:這是唯一的,如果你真的必須這樣做,.one()似乎是一個更好的選擇。

4

也許你正在尋找one()

1

如果我是你,我會用$.data做到這一點:

// Load comments 
$('.info .reply', this).mousedown(function() { 
    var id = $('form #id', this.parentNode.parentNode).val(); 

    if (!$.data(this, 'commentsloaded')) { 
     $.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json', 
      success: function(data) { 
       for (var i in data) { 
        $.data(this, 'commentsloaded', true); 
        // Do AJAX Updates 
       } 
      } 
     }); 
    } 
    return false; 
});