0
이전 시스템을 해결하고 일부 조건에서 제출 단추를 납치하고 처리기를 적용한 다음 처리가 끝나면이 처리기를 바인딩 해제하려고합니다. bind
과 unbind
을 사용하고 있지만 문제의 양식을 시작할 때마다 누적 적으로 이벤트가 연결됩니다. jQuery 핸들러에서 이벤트 바인딩 해제
class MyForm(){
constructor(){
// button in question
this.$submit = $('#submit');
this.$submit.bind('click', this.submit.bind(this));
return this;
}
submit(){
return this.doAjaxStuff();
}
doAjaxStuff(){
var self = this;
return $.post(file, data).always(function(){
self.$submit.unbind('click', self.submit);
});
}
}
불행하게도 때마다 나는 새로운
MyForm
이벤트가 다시하지만 결코 언 바운드 바인딩 만듭니다.
내가 특별히 단지 내가'(this.submit)'정의 된 핸들러를 호출 할 off'에'필요 같은 클래스를 계속 전화하지 않을 것입니다. 나는 시간에 민감한 프로젝트에서 나쁜 코드를 다루고 있는데, 이것이 내가 생각할 수있는 유일한 해결책이다. 나는 그것이 작동 할 수 있다는 것을 알고, 나는 왜 내 방법이 효과가 없는지 모르겠다. – BarryBones41
또한 네임 스페이스 이벤트도 할 수 있지만, 페이지로드시에만 한 번만 위임하게됩니다. – charlietfl
'this. $ submit.off ('click.special '). on ('click.special ', this.submit.bind (this)); ' – charlietfl