Ok dengan ini ..
$(window).scroll(function()
{
$('.slides_layover').removeClass('showing_layover');
$('#slides_effect').show();
});
Saya tahu ketika seseorang menggulir dari apa yang saya pahami. Jadi dengan itu saya mencoba mencari cara untuk menangkap ketika seseorang berhenti. Dari contoh di atas Anda dapat melihat saya menghapus kelas dari sekumpulan elemen saat pengguliran terjadi. Namun, saya ingin mengaktifkan kembali kelas itu saat pengguna berhenti menggulir.
Alasan untuk ini adalah saya bermaksud mengadakan pertunjukan singgah saat halaman bergulir untuk memberi halaman efek khusus yang saya coba kerjakan. Tetapi satu kelas yang saya coba hapus saat menggulir bertentangan dengan efek itu karena itu adalah efek transparansi pada beberapa sifat.
Jawaban:
Memperbarui
Saya menulis ekstensi untuk meningkatkan
on
-event-handler default jQuery . Ini melampirkan fungsi pengendali peristiwa untuk satu atau lebih peristiwa ke elemen yang dipilih dan memanggil fungsi pengendali jika peristiwa itu tidak dipicu untuk interval tertentu. Ini berguna jika Anda ingin mengaktifkan callback hanya setelah penundaan, seperti peristiwa pengubahan ukuran, atau semacamnya.Penting untuk memeriksa github-repo untuk pembaruan!
https://github.com/yckart/jquery.unevent.js
Gunakan seperti penangan
on
ataubind
-peristiwa lainnya, kecuali Anda dapat meneruskan parameter tambahan sebagai yang terakhir:http://yckart.github.com/jquery.unevent.js/
(demo ini menggunakan
resize
alih-alihscroll
, tapi siapa peduli ?!)sumber
Menggunakan jQuery throttle / debounce
jQuery debounce bagus untuk masalah seperti ini. jsFidlle
Parameter kedua adalah flag "at_begin". Di sini saya telah menunjukkan bagaimana menjalankan kode baik pada "scroll start" dan "scroll finish".
Menggunakan Lodash
Seperti yang disarankan oleh Barry P, jsFiddle , underscore atau lodash juga memiliki debounce, masing-masing dengan apis yang sedikit berbeda.
sumber
leading
dantrailing
diri Anda sendiri, lalu pastikan tidak ada kebingungan.Rob W menyarankan saya memeriksa posting lain di sini di tumpukan yang pada dasarnya adalah posting yang mirip dengan yang asli saya. Dari bacaan mana saya menemukan tautan ke situs:
http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
Ini sebenarnya akhirnya membantu menyelesaikan masalah saya dengan sangat baik setelah sedikit menyesuaikan kebutuhan saya sendiri, tetapi secara keseluruhan membantu menghilangkan banyak kesalahan dan menyelamatkan saya sekitar 4 jam untuk mengetahuinya sendiri.
Melihat posting ini tampaknya memiliki beberapa manfaat, saya pikir saya akan kembali dan memberikan kode yang awalnya ditemukan pada tautan yang disebutkan, kalau-kalau penulis pernah memutuskan untuk pergi ke arah yang berbeda dengan situs dan akhirnya menghapus tautan tersebut.
sumber
Saya setuju dengan beberapa komentar di atas bahwa mendengarkan waktu tunggu tidak cukup akurat karena itu akan memicu saat Anda berhenti menggerakkan bilah gulir cukup lama, bukan saat Anda berhenti menggulir. Saya pikir solusi yang lebih baik adalah mendengarkan pengguna melepaskan mouse (mouseup) segera setelah mereka mulai menggulir:
dan contoh kerjanya dapat dilihat di JSFiddle ini
sumber
Anda dapat menyetel interval yang berjalan setiap 500 md atau lebih, di sepanjang baris berikut:
Saya belum menguji kode ini, tetapi prinsipnya harus berfungsi.
sumber
Versi yang sangat kecil dengan kemampuan awal dan akhir
sumber
Ok ini adalah sesuatu yang pernah saya gunakan sebelumnya. Pada dasarnya Anda terlihat memegang wasit sampai akhir
scrollTop()
. Setelah batas waktu Anda habis, Anda memeriksa arusscrollTop()
dan jika sama, Anda selesai menggulir.sumber
Gaya ES6 dengan pengecekan mulai bergulir juga.
Pemakaian:
sumber
silakan periksa acara scrollstop seluler jquery
sumber
Bagi Yang Masih Membutuhkan Ini Inilah Solusinya
sumber
Ini harus bekerja:
sumber
Inilah cara Anda menangani ini:
sumber
Ini mendeteksi scroll stop setelah 1 milidetik (atau mengubahnya) menggunakan timer global:
sumber