Acara sentuh (sentuh)
Terdapat beberapa acara sentuhan yang boleh disesuaikan dalam jQuery Mobile. Walau bagaimanapun, acara ini hanya tersedia apabila pengguna yang berinteraksi dengan peranti yang didayakan sentuhan melawati tapak jQuery Mobile anda. Apabila acara ini tersedia, anda boleh mencetuskan sebarang JavaScript tersuai sebagai tindak balas kepada lima acara berbeza: ketik, ketuk, leret, leret ke kiri dan ke kanan leret.
ketik: Dicetuskan selepas ketik pantas dan lengkap
tahan ketuk (ketik dan tahan): Dicetuskan selepas mengetik dan menahan (kira-kira satu saat)
leret: Peristiwa yang dicetuskan apabila seretan mendatar lebih besar daripada 30px atau seretan menegak kurang daripada 20px dalam masa satu saat. Berapa lama dan berapa banyak piksel untuk diseret boleh ditetapkan. Acara ini mempunyai atribut yang berkaitan, iaitu
scrollSupressionThreshold (lalai: 10px) – Seretan mendatar lebih besar daripada nilai ini tidak akan dicetuskan.
durationThreshold (lalai: 1000ms) – Jika masa gelongsor melebihi nilai ini, tiada acara gelongsor akan dijana.
horizontalDistanceThreshold (lalai: 30px) – Peristiwa gelongsor akan berlaku hanya apabila jarak leret mendatar melebihi nilai ini.
verticalDistanceThreshold (lalai: 75px) – Peristiwa gelongsor akan berlaku hanya jika jarak leret menegak lebih kecil daripada nilai ini.
leret ke kiri (leret ke kiri): dicetuskan apabila acara leret berada di arah kiri
ke kanan (leret ke kanan): dicetuskan apabila acara leret ke arah yang betul
Untuk mengikat acara ini, anda hanya perlu memprogram dalam document.ready(), seperti yang ditunjukkan dalam contoh kod berikut:
<!DOCTYPE HTML> <html> <head> <title>Understanding the jQuery Mobile API</title> <link rel="stylesheet" href="jquery.mobile.css" /> <script src="jquery.js"></script> <script type="text/java script"> $(document).ready(function(){ $(".tap-hold-test").bind("taphold", function(event) { $(this).html("Tapped and held"); }); }); </script> <script src="jquery.mobile.js"></script> </head> <body> <div data-role="page" id="my-page"> <div data-role="header"> <h1>Header</h1> </div> <div data-role="content"> <ul data-role="listview" id="my-list"> <li class="tap-hold-test">Tap and hold test</li> </ul> </div> </div> </body> </html>
Seperti yang anda boleh lihat daripada kod di atas, senarai terikat kepada acara taphold Apabila DOM dimuatkan dan acara taphold dicetuskan, mesej gesaan Ditap dan ditahan akan dipaparkan.
Acara tetikus maya
Kami menyediakan satu siri acara tetikus "maya" dalam percubaan untuk mengabstrakkan peristiwa tetikus dan sentuhan. Ini membolehkan pembangun mendaftarkan pendengar untuk acara asas tetikus seperti mousedown, mousemove, mouseup dan click. Pemalam akan berada dalam persekitaran sentuh, dan pemalam akan mengekalkan susunan ia dicetuskan dalam persekitaran tetikus tradisional Contohnya: vmouseup sentiasa dicetuskan sebelum vmousedown, vmousedown sentiasa dicetuskan sebelum vmouseup, dsb. Acara tetikus maya juga akan menormalkan maklumat koordinat yang dikeluarkan daripada pedang buku. Oleh itu, koordinat pageX, pageY, screenX, screenY, clientX dan sifat klienY objek acara boleh digunakan dalam peranti berasaskan sentuhan.
vmouseover: kendalikan peristiwa biasa sentuhan atau mouseover
vmousedown: kendalikan peristiwa normal touchstart atau mousedown
vmousemove: mengendalikan acara normal touchmove atau mousemove
vmouseup: mengendalikan acara normal touchend atau mouseup
vclick: mengendalikan peristiwa biasa sentuhan atau klik tetikus. Pada peranti berasaskan sentuhan, acara ini dicetuskan selepas acara vmouseup.
vmousecancel: mengendalikan acara normal sentuhan atau tetikus cancel
Amaran: Gunakan vclick dengan berhati-hati
Berhati-hati menggunakan vclick pada peranti sentuh. Penyemak imbas berasaskan Webkit akan menjana acara tetikus turun, naik tetikus dan klik 300ms selepas peristiwa hujung sentuh dicetuskan. Sasaran peristiwa tetikus yang dijana ini dikira apabila ia menyala, berdasarkan lokasi peristiwa sentuhan, dan dalam beberapa kes boleh menghasilkan pengiraan yang berbeza pada peranti yang berbeza atau bahkan OS yang berbeza pada peranti yang sama. Ini bermakna elemen sasaran acara klik asal mungkin tidak sama dengan elemen sasaran acara tetikus yang dijana oleh penyemak imbas itu sendiri.
Kami mengesyorkan menggunakan kaedah klik dan bukannya kaedah vclick dalam peristiwa di mana sentuhan boleh mengubah kandungan di bawah titik yang anda klik. Peristiwa sedemikian termasuk peralihan halaman dan gelagat lain seperti mengecut/meregangkan, yang boleh menyebabkan skrin berubah atau kandungan diganti sepenuhnya.
Batalkan gelagat klik lalai bagi elemen
Aplikasi memanggil acara vclick untuk membatalkan acara klik lalai untuk elemen. Pada peranti berasaskan tetikus, memanggil kaedah preventDefault() pada acara vclick adalah bersamaan dengan memanggil kaedah preventDefault() pada fasa menggelegak temporal bagi klik sebenar. Pada peranti berasaskan sentuhan ia lebih rumit sedikit, kerana peristiwa klik sebenar akan dicetuskan 300 milisaat selepas peristiwa vclick dicetuskan. Untuk peranti sentuh, memanggil kaedah preventDefault() pada acara vclick akan menyebabkan beberapa kod dalam pemalam vmouse cuba menangkap acara klik seterusnya. Jadi menurut kaveat di atas, sukar untuk memadankan acara sentuhan dengan acara tetikus yang sepadan kerana matlamat mereka berbeza. Jadi percubaan oleh pemalam vmouse untuk mengenal pasti acara klik yang sepadan melalui koordinat biasanya akan gagal.
Dalam sesetengah kes, pengecaman sasaran dan koordinat dua peristiwa akan gagal, yang akan menyebabkan peristiwa klik dicetuskan atau tindakan lalai elemen dilaksanakan, atau apabila kandungan ditukar atau diganti, peristiwa klik unsur lain dicetuskan. Jika pepijat sebegitu kerap berlaku pada elemen tertentu, kami mengesyorkan anda menggunakan pencetus terdorong klik untuk tindakan tersebut.