인라인 onclick 코드는 다음과 같습니다:
btnOKClick 코드:
function btnOKClick() {
Alert("btnOK Clicked");
}
이제 버튼을 클릭한 후 onclick 이벤트를 제거하고 새 클릭 이벤트를 버튼에 바인딩합니다. 두 번째 클릭하면 두 번째 이벤트 처리 함수가 실행되기 시작합니다. 두 번째 처리 함수의 코드:
코드 다시 클릭:
function reclick() {
alert('reclick')
}
[sS ]*n
아이디어: btnOKClick에서 onclick을 제거하고 새 바인딩을 추가합니다. 코드는 다음과 같습니다.
$('#btnOK').attr('onclick', '').bind(' click', function () { reclick() })
이 코드를 추가한 후 btnOKClick 메서드는 다음과 같습니다.
function btnOKClick() {
alert("btnOK Clicked")
$('#btnOK' ).attr('onclick' , '').bind('click', function () { reclick(); });
}
이 방법은 Google Chrome에서 정상적으로 작동합니다. 그러나 IE와 호환되지 않습니다. reclick 메소드는 모드에서 즉시 호출되며 이는 우리가 원하는 효과가 아닙니다.
이 효과가 나타나는 이유는 onclick이 실행된 후 IE가 다시 클릭에 바인딩된 핸들러가 있는지 확인하기 위한 구조가 있으므로 즉시 실행되기 때문인 것 같습니다.
이 문제를 해결하기 위해 아이디어를 변경하고 클릭 이벤트 바인딩을 지연할 수 있습니다. 구체적인 코드는 다음과 같습니다.
function btnOKClick () {
alert("btnOK 클릭됨");
setTimeout(function () {
$('#btnOK').attr('onclick', '').bind('click', function () { reclick (); });
}
여기에서는 setTimeout 타이머가 사용되며 onclick 속성이 제거됩니다. 클릭이 핸들러 코드에 바인딩됩니다.
테스트 후 IE9의 호환 모드와 비호환 모드 모두에서 정상적으로 실행될 수 있으며 Google Chrome도 정상적으로 실행됩니다.