HTML 입력 및 버튼 요소가 있습니다. 폼을 제출하고 보조 창을 열 때 버튼을 사용합니다. 문제는 클릭 한 번으로 두 번 (또는 때로는 더 많은) 양식 제출로 바뀌거나 두 개의 추가 브라우저 창을 여는 것입니다. 여러 웹 브라우저에서 문제가 재현되었습니다. 나는 jQuery 버전을 바꾸려고 시도했지만 아무 것도 바뀌지 않았다. 이런 일이 일어날 수있는 원인은 무엇일까요?jQuery : 단일 버튼 클릭, 두 번 이상 클릭 이벤트 발생
답변
이벤트를 여러 번. 처리기를 할당 한 행이 부주의로 여러 번 호출되지 않는지 확인하는 것이 좋습니다. 또 다른 해결책은 전화가 같은 첫 바인딩을 해제 할 수 :
$("#myButton").unbind("click").click(myHandler);
하지만 난 그냥 추측하고있어 일부 코드를 보지 않고
., 나는 추천 할 수있는 최선의 하나의()에서 찾고 당신은 많은 정보를 제공하지 않은 점을 감안
당신이 클릭에 동일한 핸들러를 할당하기 때문에 귀하의 문제가 발생 될 수 있습니다jQuery Sparkle은 "once"함수를 호출하여 처리기를 이벤트에 단 한 번만 바인딩 할 수있는 깨끗하고 우아한 솔루션을 제공합니다.
이 사용하는 것과 다르 코 Z의 제안을 통해 중요한 개선은 다음과 같습니다
$("#myButton").unbind("click").click(myHandler);
는 "클릭"이벤트가 호출 될 때마다 관련된 다른 "클릭"핸들러 바인딩을 해제겠습니까. 따라서 실수로 한 번 바인드되는 것을 확실하게 보장 할 수 있습니다. 너!
jarrett의 제안은 호출 후 바로 "클릭"처리기의 바인딩을 해제하므로 다시 호출 된 핸들러 (초기 화재 이후)를 처리하려면 핸들러를 리 바인드해야합니다.
jQuery Sparkle을 사용하면 처리기가 필요한만큼 여러 번 실행될 수 있지만 여러 번이 아니라 한 번만 바인딩됩니다. 당신은 다음과 같이 사용할 수 있습니다 : 당신은 그냥 jQuery의 "바인딩"내장처럼 콜백의 데이터를 지원하려는 경우
$('#myButton').once('click', function(){
// my handler
});
을 또는, 당신은 사용할 수 있습니다
이$('#myButton').once('click', data, function(){
// my handler
});
당신은 찾을 수 once 함수를 정의하기위한 소스 코드 here.
오픈 소스이므로 AGPL 라이센스를 통해 자유롭게 걱정없이 자유롭게 사용할 수 있습니다! :-) 또한 하루 하루를 적극적으로 개발하므로 지원이 부족하지 않을 것입니다.
하지만 가장 중요한 것은 DRY 플러그인/효과 프레임 워크로 플러그인과 확장 프로그램을 훨씬 더 쉽게 개발할 수 있다는 것입니다. 목표를 달성하는 데 도움이되기를 바랍니다.
나는 이것이 오래된 것을 알지만,이 해결책은 올바른 해결책을 찾는다. 오늘의 jQuery 버전에서 .one 바인딩 함수를 사용하고 내 문제가 해결되었다. –
은 나를 위해 그것은
$(function() {
$('.some-element').click(function() {
//event that fires twice
});
//some exception-throwing code here
});
jQuery를 두 번 (?!) 때문에 예외의 클릭 기능을 두 번 구속 될 수 있도록 익명 준비 함수를 호출 한에 의해 발생했다.
당신은 요소에 대한 이벤트 핸들러를 연결 $("div").one("click", function() { ... });
를 사용할 수 있습니다. 핸들러는 요소 당 최대 한 번만 실행됩니다.
그것이 내가 사용 원래했기 때문에 나를 위해 일하기 전에이 같은 호출 $ ('#의 myButton에').에 ('클릭'... 내 청취자를 할당 할 수는.
$('#myButton').off();
이 잘 작동합니다. 그것은 나를 위해 작동합니다.
$(".class-name").unbind().click(function() {
//Do the Stuff
});
모달 대화 상자 창에 문제가있었습니다. 세션에서 대화 상자를 열 때마다 이벤트가 한 번 발생했습니다. 첫 번째 창에서 아무런 문제가 없습니다. 두 번째 창에서 두 번 실행되고 세 번째 창에서 세 번 실행됩니다.
새 대화 상자 창을 열 때마다 대화 상자의 초기화 기능이 호출되는 것으로 나타났습니다. 같은 세션. 전역 변수 notInit = -1을 추가하고 init을 실행할 때 값을 1로 지정했습니다. init 함수를 실행하기 전에 notInit의 값을 확인하고 값이 -1 인 경우에만 init을 계속 진행했습니다.
이것은 내가 좋아할만한 것으로 들린다. 구현하고 싶지만 단계 구문을 잘 모르겠습니다. 너무 많이 쓰지 않는다면 답안에 코드 스 니펫을 제공 하시겠습니까? – Chris22
- 1. 두 번 클릭 이벤트
- 2. 버튼 클릭 이벤트
- 3. 버튼 클릭 이벤트
- 4. DataGridview의 버튼 클릭 이벤트
- 5. Search 버튼 클릭 이벤트
- 6. 장애인 버튼 ('클릭') 이벤트
- 7. jquery 라디오 버튼 클릭 이벤트 문제
- 8. iPad에서 jQuery 클릭 이벤트가 두 번 호출됩니다.
- 9. jquery 클릭 이벤트
- 10. javascript 버튼 클릭 및 asp.net 버튼 클릭
- 11. Jquery 및 클릭 이벤트
- 12. Jquery 클릭 이벤트 애니메이션
- 13. jquery 클릭 이벤트
- 14. 버튼 클릭 이벤트 내선 JS
- 15. 버튼 클릭 호출 이벤트 메서드
- 16. 버튼 클릭 이벤트 - 로터스 스크립트
- 17. asp.net mvc 버튼 클릭 이벤트
- 18. 버튼 클릭 이벤트 발생하지 않음
- 19. jQuery 오버레이 클릭 이벤트 트리거 탐색 클릭
- 20. 지도 주석을 두 번 클릭
- 21. NSCollectionViewItem 두 번 클릭 작업?
- 22. Wpf 버튼 두 번째 클릭
- 23. UIWebView 클릭 이벤트 클릭
- 24. 썸네일 캡션 단일 클릭 및 더블 클릭?
- 25. Jquery 함수가 두 번 이상 호출합니다.
- 26. 처리 방법 버튼 클릭 및 목록보기 단일 행을 클릭 하시겠습니까?
- 27. jQuery 동적 버튼 클릭 핸들러
- 28. javascript jquery 라디오 버튼 클릭
- 29. 클릭 이벤트 내에서 클릭 이벤트 할당
- 30. Delphi 2010 버튼 클릭 이벤트 손실
아마 잘못했을 수 있습니다. http://www.jsbin.com에 몇 가지 코드 또는 버전을 게시하여 도움을 받으십시오. – Kobi
예, 코드를 게시해야합니다. 그렇지 않으면 도움을받을 수 없습니다. –
같은 문제가 생겼어. 내 경우에는 확인 ("..") 함수로 팝업 창을 호출 했으므로 Enter 키를 누르면 "OK"와 백그라운드에서 선택한 항목. 어떤 도움이 필요합니까? –