Điều này được thực hiện như thế nào?Cần hủy các sự kiện click/mouseup khi nhấp đúp vào sự kiện được phát hiện
Trả lời
Đây là một câu hỏi hay và tôi thực sự không nghĩ rằng nó có thể được thực hiện dễ dàng. (Some discussion on this)
Nếu nó là siêu Duper quan trọng để bạn có thể có chức năng này, bạn có thể hack nó như vậy:
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);
});
Và đây là một example of it at work.
Như đã nêu trong phần bình luận, có một plugin cho điều này làm những gì tôi đã làm ở trên khá nhiều, nhưng gói nó lên cho bạn để bạn không phải nhìn thấy xấu xí: FixClick.
Có vẻ như nó hoạt động, nhưng nó có vấn đề riêng biệt là không phát hiện các nhấp chuột thường xuyên trong 0,5 giây. Tôi có thể rút ngắn thời gian, tất nhiên, nhưng ... oh well. Tôi sẽ tự mình tìm ra điều này. Dù sao cũng cảm ơn bạn. –
Vâng, tôi đang suy nghĩ 250 hoặc thậm chí ít hơn có lẽ là hợp lý để mong đợi như xa như nhấp đúp chuột đi. Tôi đã làm một số googling nghiêm trọng về điều này và dường như đây là tốt nhất bạn sẽ nhận được. Tôi có thể làm cho một plugin ra khỏi nó để ẩn đi xấu xí nếu nó làm cho bạn cảm thấy tốt hơn. :) –
Thú vị, đã không thử điều này được nêu ra và thực sự trông giống như một cách hackish để làm điều đó. Nhưng từ một sự kiện-điểm-xem-nó có ý nghĩa rằng các sự kiện nhấp chuột được gọi là hai lần – jitter
Kỹ thuật được nêu trong các câu trả lời khác được gọi là debouncing.
Nội dung thú vị và bài viết hay. +1 –
Raymond Chen đã thảo luận một số trong số implications of single-versus-double clicking - mặc dù anh ấy đang nói trong ngữ cảnh của Windows, những gì anh ấy nói có liên quan đến thiết kế giao diện người dùng dựa trên trình duyệt.
Về cơ bản, hành động được thực hiện trên nhấp đúp phải là điều hợp lý cần làm sau một lần nhấp. Ví dụ: trong giao diện người dùng trên máy tính để bàn, nhấp chuột duy nhất chọn mục và nhấp đúp sẽ mở mục đó (ví dụ: mở tệp hoặc khởi chạy ứng dụng). Người dùng sẽ phải chọn tệp để mở tệp đó, vì vậy, việc thực hiện hành động nhấp chuột duy nhất được thực hiện trước hành động nhấp đúp là không quan trọng.
Nếu bạn có thành phần giao diện người dùng có hành động nhấp đúp hoàn toàn không liên quan đến hành động nhấp chuột duy nhất, điều đó trở nên cần thiết để ngăn hành động nhấp chuột duy nhất xảy ra khi hệ thống nhận ra nó thực sự là một nhấp đúp, thì bạn thực sự nên suy nghĩ lại về thiết kế của bạn. Người dùng sẽ thấy nó khó xử và phản trực giác, ở chỗ nó sẽ không hành động theo cách mà họ quen với việc diễn xuất.
Nếu bạn vẫn muốn theo cách đó, bạn sẽ phải sử dụng kỹ thuật debouncing (trong trường hợp tất cả các thao tác nhấp chuột sẽ bị trì hoãn) hoặc thực hiện một số cơ chế khác theo đó trình xử lý nhấp đúp hoàn tác công việc được thực hiện bởi trình xử lý nhấp chuột duy nhất.
Bạn cũng nên lưu ý rằng một số người dùng đặt thời gian nhấp đúp dài. Ví dụ, một số người có thể có thời gian nhấp đúp nhiều hơn một tập thứ hai trong tùy chọn hệ thống của họ, vì vậy kỹ thuật debouncing dựa trên khoảng thời gian tùy ý mà bạn chọn sẽ làm cho thành phần UI của bạn không thể truy cập được với những người đó nếu thực hiện thao tác nhấp đơn lẻ sẽ loại trừ hành động nhấp đúp. Kỹ thuật "hoàn tác những gì vừa xảy ra trên một cú nhấp chuột" là giải pháp khả thi duy nhất cho điều này, theo như tôi biết.
đây là những điểm tốt! –
điểm tốt về người dùng có thể đặt thời gian nhấp đúp của riêng họ ... tôi không muốn đợi một giây đầy đủ trước khi tôi thực hiện thao tác nhấp chuột duy nhất, vì vậy, hãy đợi nhấp đúp với thời gian chờ là vô dụng thực tế – Hrqls
đôi khi hành động nhấp đúp là một sự theo dõi hợp lý sau một lần nhấp và có thể thực hiện hành động nhấp chuột đơn lẻ trước đó (đó là cách tôi có nó ngay bây giờ), nhưng hành động nhấp chuột duy nhất có thể gây thêm tải (hoặc, trong trường hợp của tôi, lưu lượng dữ liệu) mà bạn muốn ngăn chặn (mặc dù nó sẽ không làm tổn thương chính xác) – Hrqls
jQuery Sparkle cung cấp giải pháp thanh lịch gọn gàng cho việc này, bằng cách triển khai sự kiện tùy chỉnh trên một trình duyệt. Bằng cách này, bạn có thể sử dụng nó giống như bất kỳ sự kiện khác, vì vậy:
$('#el').singleclick(function(){});
// or event
$('#el').bind('singleclick', function(){});
Nó cũng cung cấp các sự kiện tùy chỉnh cho các nhấp chuột cuối cùng và lần đầu tiên trong một loạt các cú nhấp chuột. Và sự kiện tùy chỉnh lastclick thực sự vượt qua số lần nhấp chuột trở lại! Vì vậy, bạn có thể làm điều này!
$('#el').lastclick(function(event,clicks){
if (clicks === 3) alert('Tripple Click!');
});
Bạn có thể tìm mã nguồn để xác định sự kiện tùy chỉnh here.
Đó là mã nguồn mở theo giấy phép AGPL, vì vậy bạn có thể thoải mái lấy những gì bạn cần mà không cần lo lắng!:-) Nó cũng tích cực phát triển trên cơ sở hàng ngày, do đó bạn sẽ không bao giờ được ngắn về hỗ trợ.
Nhưng quan trọng nhất là khung Plugin/hiệu ứng DRY để cho phép bạn phát triển plugin và tiện ích mở rộng dễ dàng hơn nhiều. Vì vậy, hy vọng điều này sẽ giúp đạt được mục tiêu đó!
Nếu đây là một nút gửi biểu mẫu (không nhất thiết là trường hợp cho áp phích gốc, nhưng có thể là trường hợp cho những người khác đến đây qua Google), một tùy chọn dễ dàng hơn là vô hiệu hóa phần tử được nhấp vào trong trình xử lý sự kiện nhấp chuột của bạn:
$(selector).click(function(e) {
$(this).prop('disable', true);
}
- 1. Nhận sự kiện nhấp đúp
- 2. Thực hiện sự kiện nhấp đúp trên Silverlight 4 Datagrid
- 3. jQuery "sau khi nhấp vào" sự kiện
- 4. Khi nào cần hủy các sự kiện trong Silverlight
- 5. Thoát/tắt chế độ chỉnh sửa sau khi nhấp đúp vào sự kiện được xử lý
- 6. tại sao sự kiện DataGrid MouseDoubleClick được kích hoạt khi bạn nhấp đúp vào thanh cuộn?
- 7. TabPage Nhấp vào Sự kiện
- 8. Sự kiện nhấp hoãn sự kiện
- 9. Phát hiện sự kiện nhấp chuột giữa jQuery
- 10. Ngăn sự kiện nhấp chuột kích hoạt khi sự kiện dblclick kích hoạt
- 11. Chỉ đạo sự kiện chuột [DllImport ("user32.dll")] nhấp, nhấp đúp vào
- 12. jQuery ngăn các sự kiện khác sau khi nhấp vào
- 13. Sự kiện mờ dừng sự kiện nhấp chuột hoạt động?
- 14. Phát hiện nhiều sự kiện tải ảnh
- 15. Ngăn sự kiện nhấp chuột sau sự kiện được tổ chức và sự kiện mouseup
- 16. làm thế nào để ngăn chặn sự kiện nhấp đúp trong một datagridview được nâng lên?
- 17. Nhấp vào sự kiện trên TinyMCE 4.0
- 18. Sự kiện nhấp vào nút trên Android
- 19. Nhấp vào Sự kiện trong UITableView
- 20. ASP.NET + ModalPopupExtender + Nhấp vào Sự kiện
- 21. thêm sự kiện nhấp vào fullcalendar
- 22. Nhấp vào sự kiện trên jTable -Java
- 23. Sự kiện jQuery Stop .blur() khi nhấp vào nút "gửi"
- 24. Nhấp vào sự kiện trên SlidingPaneLayout
- 25. Dừng sự kiện kéo trong khi nhấp vào liên kết
- 26. Sự kiện LongClick cũng kích hoạt Sự kiện nhấp
- 27. Xử lý DataGridHyperlinkColumn Nhấp vào Sự kiện
- 28. MKMapView: Nhận sự kiện được nhấp vào ghim chú thích
- 29. Sự kiện nhấp đúp vào ô trong chế độ xem lưới dữ liệu
- 30. Chụp sự kiện hủy trên kiểu đầu vào = tệp
Đối với cùng một yếu tố hoặc cho toàn bộ tài liệu? – rahul