어떻게 처리하나요?두 번 클릭 이벤트가 감지되면 클릭/마우스 업 이벤트를 취소해야합니다.
답변
이것은 좋은 질문이며, 실제로는 쉽게 할 수 있다고 생각하지 않습니다.
function singleClick(e) {
// do something, "this" will be the DOM element
}
function doubleClick(e) {
// do something, "this" will be the DOM element
}
$(selector).click(function(e) {
var that = this;
setTimeout(function() {
var dblclick = parseInt($(that).data('double'), 10);
if (dblclick > 0) {
$(that).data('double', dblclick-1);
} else {
singleClick.call(that, e);
}
}, 300);
}).dblclick(function(e) {
$(this).data('double', 2);
doubleClick.call(this, e);
});
을 그리고 여기에 example of it at work입니다 :이 기능을 갖는 것이 슈퍼아요 중요한 경우 (Some discussion on this)
, 그렇게처럼 해킹 수 있습니다.
덧글에서 지적한대로, 내가 위에 한 일을 수행하는 플러그인이 있지만 추한 것을 볼 필요가 없도록 꾸러미를 포장합니다. FixClick.
잘 작동하는 것처럼 보이지만 0.5 초 동안 정기적 인 클릭을 감지하지 못하는 뚜렷한 문제가 있습니다. 물론 시간을 단축 할 수는 있지만 ... 오 잘. 나는 이것을 직접 알아낼 것이다. 어쨌든 고마워. –
그래, 나는 250 번이나 그 이하가 아마 두 번 클릭까지 예상하는 것이 합리적이라고 생각하고있다. 나는 이것에 관해 진지한 약간의 인터넷 검색을하고 있었다. 그리고 명백하게 이것은 당신이 얻는 최고 다. 나는 당신이 기분이 나아지면 그 추악한 것을 숨기기 위해 플러그인을 만들 수 있습니다. :) –
흥미 롭다. 아직 시도하지 않았고 실제로 해킹 방법처럼 보였다. 하지만 이벤트 관점에서 볼 때 클릭 이벤트가 두 번 호출된다는 것은 의미가 있습니다 – jitter
레이몬드 첸 (Raymond Chen)은 Windows의 컨텍스트에서 말하고 있지만 브라우저 기반 UI 디자인과 관련이 있다고 말하면서 일부는 implications of single-versus-double clicking에 대해 논의했습니다.
기본적으로 두 번 클릭 한 동작은 한 번의 클릭으로 수행해야하는 논리적 작업입니다. 예를 들어, 데스크탑 UI에서 한 번 클릭하면 항목이 선택되고 두 번 클릭하면 열립니다 (예 : 파일을 열거 나 응용 프로그램을 시작). 사용자는 파일을 선택하여 어쨌든 열어야하므로 더블 클릭 동작 전에 한 번의 클릭 동작 만 수행해도 상관 없습니다.
두 번 클릭 동작이 한 번 클릭 동작과 완전히 관련이없는 UI 구성 요소가있는 경우 시스템에서 실제로 한 번 클릭하면 두 번 클릭 한 번 클릭 동작이 발생하지 않도록해야합니다. 당신의 디자인을 재고해야합니다. 사용자는 행동에 익숙한 방식으로 행동하지 않으므로 어색하고 반 직관적입니다.
그런 식으로 가고 싶다면 디 바운싱 기술 (모든 단일 클릭 동작이 지연 될 것임)을 사용해야하거나 그렇지 않으면 두 번 클릭 처리기가 수행 한 작업을 취소하는 일부 메커니즘을 구현해야합니다. 단일 클릭 핸들러.
일부 사용자는 매우 긴 두 번 클릭 시간을 설정합니다. 예를 들어, 관절염 환자의 손에는 시스템 환경 설정에서 두 번째 클릭 시간보다 두 배 이상의 클릭 시간이있을 수 있으므로 사용자가 선택한 임의의 시간대를 기반으로하는 디버깅 기법은 해당 사용자가 UI 구성 요소에 액세스 할 수 없도록 만듭니다. 단일 클릭 동작을 취하는 것은 더블 클릭 동작을 취하지 못하게합니다. 내가 아는 한 "한 번 클릭했을 때 일어난 일을 취소"기술 만이 가능한 유일한 해결 방법입니다.
이들은 좋은 점들입니다! –
사용자가 자신의 더블 클릭 시간을 설정할 수있는 좋은 점 ... 싱글 클릭 동작을 실행하기 전에 전체 시간을 기다리지 않으려 고하므로 더블 클릭을 기다리는 것이 실용적이지 않습니다. – Hrqls
때때로 더블 클릭 동작은 한 번의 클릭으로 논리적 인 후속 조치이며 이전에 단일 클릭 동작을 실행해도 괜찮습니다 (즉, 지금 당장 가지고있는 방법입니다). 단 하나의 클릭 동작으로 인해 추가로드가 발생할 수 있습니다 (또는, 내 경우에는 데이터 트래픽)을 방지하고 싶습니다 (정확히 해를 끼치 지는 않지만) – Hrqls
jQuery Sparkle은 singleclick 사용자 지정 이벤트를 구현하여이를위한 깨끗하고 우아한 솔루션을 제공합니다. 이렇게함으로써, 당신은 그래서, 다른 모든 이벤트처럼 사용할 수 있습니다
는$('#el').singleclick(function(){});
// or event
$('#el').bind('singleclick', function(){});
또한 클릭 일련의 마지막과 첫 번째 클릭에 대한 사용자 정의 이벤트를 제공합니다. 그리고 lastclick 맞춤 이벤트는 실제 클릭 수를 다시 전달합니다! 그래서 당신은 이것을 할 수있었습니다!
$('#el').lastclick(function(event,clicks){
if (clicks === 3) alert('Tripple Click!');
});
사용자 지정 이벤트 here을 정의하는 소스 코드를 찾을 수 있습니다.
오픈 소스이므로 AGPL 라이센스를 통해 자유롭게 걱정없이 자유롭게 사용할 수 있습니다!:-) 또한 하루 하루를 적극적으로 개발하므로 지원이 부족하지 않을 것입니다.
하지만 가장 중요한 것은 DRY 플러그인/효과 프레임 워크로 플러그인과 확장 프로그램을 훨씬 더 쉽게 개발할 수 있다는 것입니다. 목표를 달성하는 데 도움이되기를 바랍니다.
양식을 제출하는 버튼 인 경우 (원래의 포스터의 경우는 아니지만 다른 사용자가 Google을 통해 다른 사람들에게 전달할 수 있음) 더 쉬운 옵션은 해당 요소를 사용 중지하는 것입니다. 클릭 이벤트 처리기에서 클릭하는 경우 :
$(selector).click(function(e) {
$(this).prop('disable', true);
}
- 1. djit.layout.Tabcontainer - 클릭 기반 이벤트가 두 번 발생했습니다
- 2. 클릭 이벤트가 두 번 해고 - JQuery와
- 3. 두 번 클릭 이벤트를 발생시키지 않는 NotifyIcon
- 4. JavaScript 이벤트를 두 번 클릭하면 클릭
- 5. iPad에서 jQuery 클릭 이벤트가 두 번 호출됩니다.
- 6. jQTouch 이벤트가 두 번 터집니다.
- 7. 두 번 클릭 이벤트
- 8. 버튼에 대한 사용자 정의 두 번 클릭 이벤트를 만드는 방법
- 9. 콜백을 객체에 두 번 할당하면 이벤트가 두 번 실행됩니까?
- 10. 확인란을 두 번 선택하여 jTable을 선택/선택 취소해야합니다.
- 11. jQuery 대화 상자의 클릭 이벤트가 두 번 발생합니까?
- 12. KeyDown 이벤트가 두 번 호출됩니다
- 13. jQuery Submit 이벤트가 두 번 발생합니다
- 14. 항목이없는 ListView에서 두 번 클릭 이벤트를 트랩하려면 어떻게합니까?
- 15. UIWebView는 javascript 기반의 두 번 클릭 이벤트를 지원합니까? 평소처럼
- 16. .NET에서 두 번 클릭 이벤트를 캡처하는 훅 응용 프로그램
- 17. Visio 셰이프에서 이벤트를 두 번 클릭하십시오.
- 18. 지도 주석을 두 번 클릭
- 19. NSCollectionViewItem 두 번 클릭 작업?
- 20. JList 요소의 이벤트를 두 번 클릭하십시오.
- 21. WPF Datagrid RowDetailsTemplate을 두 번 클릭하면 부모에서 DoubleClick 이벤트가 발생합니다.
- 22. jQuery : 'body'요소가 스크롤 이벤트를 두 번 활성화합니다.
- 23. wp7, silverlight, 왜 이벤트가 두 번 발생합니까?
- 24. jgGrid loadComplete 콜백 이벤트가 두 번 발생합니다.
- 25. 마우스를 두 번 클릭하면 어떤 이벤트가 전달되는지 디버그합니다.
- 26. NSTextField가 키 이벤트를 두 번 캡처합니다.
- 27. dblclick 이벤트가 발생하면 클릭 이벤트 발생을 방지합니다.
- 28. 자바 스크립트/jQuery를이 : 이벤트가 두 번
- 29. combobox를 클릭하면 textbox_leave 이벤트가 두 번 발생합니다.
- 30. WPF 창 : sizechanged 이벤트가 두 번 발생합니다.
동일한 요소 또는 전체 문서의 경우? – rahul