Apakah ada sesuatu di jquery yang memungkinkan saya untuk membedakan antara perilaku pada klik dua kali dan satu klik?
Ketika saya mengikat keduanya ke elemen yang sama hanya satu klik yang dijalankan.
Adakah cara yang menunggu beberapa saat sebelum eksekusi satu klik untuk melihat apakah pengguna mengklik lagi atau tidak?
Terima kasih :)
jquery
jquery-selectors
kritya
sumber
sumber
Jawaban:
Saya menemukan bahwa jawaban John Strickler tidak cukup sesuai dengan yang saya harapkan. Setelah peringatan dipicu oleh klik kedua dalam jendela dua detik, setiap klik berikutnya memicu peringatan lain sampai Anda menunggu dua detik sebelum mengklik lagi. Jadi dengan kode John, klik tiga kali bertindak sebagai dua klik ganda di mana saya mengharapkannya untuk bertindak seperti klik dua kali diikuti dengan satu klik.
Saya telah mengerjakan ulang solusinya agar berfungsi dengan cara ini dan mengalir dengan cara yang dapat dipahami pikiran saya dengan lebih baik. Saya menurunkan penundaan dari 2000 menjadi 700 untuk lebih mensimulasikan apa yang saya rasakan sebagai sensitivitas normal. Ini biolanya: http://jsfiddle.net/KpCwN/4/ .
Terima kasih untuk yayasannya, John. Saya harap versi alternatif ini bermanfaat bagi orang lain.
sumber
.on()
atas keduanya sekarang$("document").on("click","a" function(e){
sebagai gantinya di baris 5. Konstruksi ini menggantikandelegate()
penggunaan yang tidak berlaku lagi . Alih-alihdocument
Anda dapat / harus menggunakan objek induk apa pun daria
DOM bawah sejauh mungkin yang tetap ada sepanjang waktu.Solusi yang diberikan dari "Nott Responding" tampaknya mengaktifkan kedua peristiwa tersebut, klik dan klik kanan saat diklik dua kali. Namun saya pikir itu menunjuk ke arah yang benar.
Saya melakukan perubahan kecil, ini hasilnya:
Cobalah
http://jsfiddle.net/calterras/xmmo3esg/
sumber
Tentu, ikat dua penangan, satu ke
click
dan yang lainnya kedblclick
. Buat variabel yang bertambah di setiap klik. lalu setel ulang setelah penundaan yang ditetapkan. Di dalam fungsi setTimeout Anda dapat melakukan sesuatu ...sumber
Anda mungkin bisa menulis implementasi kustom click / dblclick Anda sendiri agar menunggu klik ekstra. Saya tidak melihat apa pun di fungsi inti jQuery yang akan membantu Anda mencapai ini.
Kutipan dari .dblclick () di situs jQuery
Tidak disarankan untuk mengikat penangan ke kejadian click dan dblclick untuk elemen yang sama. Urutan peristiwa yang dipicu bervariasi dari browser ke browser, dengan beberapa menerima dua peristiwa klik sebelum dblclick dan yang lainnya hanya satu. Sensitivitas klik dua kali (waktu maksimum antara klik yang dideteksi sebagai klik dua kali) dapat bervariasi menurut sistem operasi dan browser, dan seringkali dapat dikonfigurasi oleh pengguna.
sumber
Lihat kode berikut
Demo masuk ke sini http://jsfiddle.net/cB484/
sumber
Saya telah menulis sebuah plugin jQuery yang memungkinkan juga untuk mendelegasikan event click dan dblclick
sumber
$("body").multipleClicks('#mySelector', function(){ /* do something on click */},function(){/* do something on doubleclick */},300);
sumber
saya menerapkan solusi sederhana ini, http://jsfiddle.net/533135/VHkLR/5/
kode html
kode skrip
tidak terlalu lamban
sumber
Solusi ini berhasil untuk saya
sumber
Saya membuat beberapa perubahan pada jawaban di atas di sini yang masih berfungsi dengan baik: http://jsfiddle.net/arondraper/R8cDR/
sumber
Dan akhirnya kami gunakan sebagai.
sumber
Sama seperti jawaban di atas tetapi memungkinkan untuk klik tiga kali. (Delay 500) http://jsfiddle.net/luenwarneke/rV78Y/1/
sumber
Ini adalah metode yang dapat Anda lakukan menggunakan JavaScript dasar, yang berfungsi untuk saya:
sumber
Di bawah ini adalah pendekatan sederhana saya untuk masalah ini.
Fungsi JQuery:
Penerapan:
Periksa elemen yang diklik di Firefox / Chrome untuk melihat klik data naik dan turun saat Anda mengklik, sesuaikan waktu (1000) agar sesuai.
sumber