2014-02-21 4 views
-1

슬라이드 쇼를 만들 때 lis의 끝에 도달하면 오른쪽 화살표를 클릭하면 아약스가 실행되고 새 이미지 목록이로드됩니다. 두 번째 목록의 끝에 도달하면 아약스가 agaiin을 실행해야합니다. 두 번 빨리 누르면 ajax가 두 번 실행되고 한 번만 활성화되는 대신 필요한 글로벌 바를 변경합니다. Ajax 성공이 버튼을 다시 표시 할 때까지 두 번 누를 수 없도록 버튼을 숨기기 위해 hide를 배치 할 수 있습니다. 버튼은 div에 불과합니다. 나는 그것을 숨기고 싶지 않습니다. 왜냐하면 초 동안 숨겨져 있기 때문에 그것을 숨기고 싶습니다. 그 후에 rightNav를 바인딩 해제하려고하면 아약스 성공에 다시 바인딩 할 수 없습니다. 무엇이 문제 일 수 있습니까? rightNav.bind('click'); 실제로 함수에 click 이벤트를 결합하지 않기 때문에jquery가 아약스 성공시 바인딩 해제 및 바인딩

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

코드는 작동하지 않습니다.

bind (귀하의 경우)의 구문은 bind(event, callback)입니다.

그래서 당신은 할 수 중 하나

당신은 같은 다시 할당 할 수 있도록) 함수에 이름을 지정 :

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

그리고 당신이 다시 할당 :

rightNav.bind('click', f); 
아약스가 이미로드 할 때

B)를 클릭 무시 :

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

     if (rightNav.loading) { 
      return; 
     } 

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

고마워, 나는 당신의 첫 번째 솔루션을 시도하고 그것을 작동합니다. – user2406735

관련 문제