2012-10-01 2 views
0

AJAX를 사용하여 내부 팝업 창을 여는 jQuery 플러그인을 만들었습니다.내 jQuery 팝업 플러그인 단추가 잘못된 콜백을 호출합니다.

팝업을 호출하는 동안 사용자 지정 콜백을 사용하여 팝업 윈도우의 아래쪽에 작업 단추를 설정할 수 있습니다.

for(i in settings.buttons) 
{ 
var button = settings.buttons[i]; 

$('<a></a>', { 
    text: button.label, 
    href: '#', 
    click: function(e){ 
     e.preventDefault(); 
     button.callback.call(); 
    }, 
    'class': (typeof button.color == 'undefined' ? '' : button.color) 
}).appendTo(popup.buttons); 
} 

문제는 코드가 내가 2 개 버튼, 그들 중 하나 트리거를 설정 한 경우, 예를 들어, 잘못된 콜백을 호출하는 것입니다 : 여기

는 버튼을 생성하고 콜백을 설정하는 코드입니다 다른 하나가 입력의 값을 복사하는 동안 팝업 닫음, 버튼 중 하나는 두 번째 콜백을 트리거합니다.

어떻게 수정해야합니까?

답변

0

for in 루프가 완료되면 클릭 기능이 실행됩니다. button.callback.call();은 항상 마지막 버튼 콜백을 호출합니다.

해결 방법 : 컨텍스트를 저장하십시오.

function keepContext(button) { 
     $('<a></a>', { 
     text : button.label, 
     href : '#', 
     click : function(e) { 
      e.preventDefault(); 
      button.callback.call(); 
     }, 
     'class' : (typeof button.color == 'undefined' ? '' : button.color) 
    }).appendTo(popup.buttons);  
} 
for (i in settings.buttons) { 
    keepContext(settings.buttons[i]); 
} 
+0

귀하의 답변이 저에게 도움이되었습니다. 고맙습니다. 결코 그것에 대해 생각하지 않았습니다. 나는 비슷한 방법을 시도했다. (당신이 알아 차 렸듯이, '버튼'이라고 불리는 가변적 인 것을 설정했다.) 아무 것도 도움이되지 않았다. 감사 (: –

관련 문제