>웹 프론트엔드 >JS 튜토리얼 >jquery는 버튼의 인라인 onclick 이벤트를 제거합니다(테스트되었으며 브라우저와 호환됨)_jquery

jquery는 버튼의 인라인 onclick 이벤트를 제거합니다(테스트되었으며 브라우저와 호환됨)_jquery

WBOY
WBOY원래의
2016-05-16 17:42:491103검색

인라인 onclick 코드는 다음과 같습니다:

코드 복사 코드는 다음과 같습니다.



btnOKClick 코드:
코드 복사 코드는 다음과 같습니다.

function btnOKClick() {
Alert("btnOK Clicked");
}

이제 버튼을 클릭한 후 onclick 이벤트를 제거하고 새 클릭 이벤트를 버튼에 바인딩합니다. 두 번째 클릭하면 두 번째 이벤트 처리 함수가 실행되기 시작합니다. 두 번째 처리 함수의 코드:
코드 다시 클릭:
코드 복사 코드는 다음과 같습니다.

function reclick() {
alert('reclick')
}
[sS ]*n

아이디어: btnOKClick에서 onclick을 제거하고 새 바인딩을 추가합니다. 코드는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.

$('#btnOK').attr('onclick', '').bind(' click', function () { reclick() })

이 코드를 추가한 후 btnOKClick 메서드는 다음과 같습니다.
복사 code 코드는 다음과 같습니다.

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도 정상적으로 실행됩니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.