2014-02-21 55 views
-1

我創建幻燈片,當我到達lis結尾並單擊右箭頭時,ajax應該觸發並加載新圖像列表。當我到達第二個列表的結尾時,ajax應該觸發agaiin。如果我點擊兩次快速阿賈克斯火兩次,並改變我需要的全球變量,而不是隻激活一次。我可以在隱藏其他按鈕之後放置隱藏按鈕,以便它不能被按下兩次,直到ajax成功再次顯示按鈕。該按鈕只是一個div。我不想隱藏它,因爲它隱藏了一秒,我希望它可見。如果我嘗試在其他人之後解除綁定rightNav,那麼我無法在ajax成功上再次綁定它。 可能是什麼問題?jquery解綁並綁定到ajax成功

rightNav.click(function(){ 
    if(index <= listLength - 2){ 
     index = index + 1; 
     appendImage(index); 
    } 
    else { 
     rightNav.unbind('click'); 
     nextUrl = '/GetPhotosCriterians?categoryid=' + pCategoryId + '&styleid=' + pStyleId + '&terms=' + pTerms + '&pos=' + nextPos; 
     $.ajax({ 
      type: "GET", 
      url: nextUrl, 
      dataType:"json", 
      success: function(data){ 
       imagesList = data; 
       listLength = imagesList.length; 
       appendImage(0); 
       curentPos = nextPos; 
       nextPos = nextPos + imgNumber; 
       prevPos = curentPos - imgNumber; 
       rightNav.bind('click'); 
      } 
     }); 
    } 
}); 

回答

1

您的代碼不起作用,因爲rightNav.bind('click');不實際的click事件綁定到你的函數。

bind(在你的情況下)的語法是bind(event, callback)

所以,你既可以:

一)提供一個名稱的功能,這樣你就可以再次分配給變量,如:

var f = function() { if(index <= listLength - 2){ ... 
rightNav.click(f); 

然後你分配回:

rightNav.bind('click', f); 

b)當ajax已經加載時忽略點擊:

else { 
     //rightNav.unbind('click'); 

     if (rightNav.loading) { 
      return; 
     } 

     rightNav.loading = true; 
     ... 
     success: function(data){ 
      rightNav.loading = false; 
     ... 
+0

謝謝,我已經嘗試了你的第一個解決方案,它的工作原理。 – user2406735