jquery mengaktifkan panggilan preventDefault () secara default, sehingga default tidak berfungsi. Anda tidak dapat mengklik kotak centang, Anda tidak dapat mengklik tautan dll
apakah mungkin mengembalikan handler default?
javascript
jquery
events
preventdefault
event-bubbling
Stijn de Witt
sumber
sumber
preventDefault
setelah dipanggil. Saat ini pertanyaan ini sebenarnya 'bagaimana cara melepaskan ikatan pendengar acara dengan jQuery?'.Jawaban:
Dalam kasus saya:
$('#some_link').unbind('click');
berfungsi sebagai satu-satunya metode untuk mengembalikan tindakan default.Seperti yang terlihat di sini: https://stackoverflow.com/a/1673570/211514
sumber
Cukup sederhana
Mari kita anggap Anda melakukan sesuatu seperti
sekarang untuk mengembalikannya ke situasi semula, lakukan di bawah ini ...
Dari situs web ini .
sumber
Tidak mungkin mengembalikan
preventDefault()
tetapi yang bisa Anda lakukan adalah mengelabui :)Jika Anda ingin melangkah lebih jauh, Anda bahkan dapat menggunakan tombol pemicu untuk memicu suatu peristiwa.
sumber
sumber
dalam beberapa kasus * Anda awalnya dapat
return false
bukannyae.preventDefault()
, kemudian ketika Anda ingin mengembalikan ke defaultreturn true
.* Berarti ketika Anda tidak keberatan acara itu menggelegak dan Anda tidak menggunakannya
e.stopPropagation()
bersamae.preventDefault()
Lihat juga pertanyaan serupa (juga di stack Overflow)
atau dalam hal kotak centang Anda dapat memiliki sesuatu seperti:
sumber
Anda dapat mengembalikan tindakan default (jika ini adalah HREF follow) dengan melakukan ini:
window.location = $(this).attr('href');
sumber
jika itu tautan maka
$(this).unbind("click");
akan mengaktifkan kembali tautan yang mengklik dan perilaku default akan dikembalikan.Saya telah membuat demo JS fiddle untuk mendemonstrasikan cara kerjanya:
Berikut adalah kode biola JS:
HTML:
Javascript:
sumber
Uji kode ini, saya pikir selesaikan masalah Anda:
Referensi
sumber
Cara terbaik untuk melakukan ini dengan menggunakan namespace. Ini adalah cara yang aman dan terjamin. Di sini .rb adalah namespace yang memastikan fungsi unbind bekerja pada keydown tertentu tetapi tidak pada yang lain.
ref1: http://idodev.co.uk/2014/01/safely-binding-to-events-using-namespaces-in-jquery/
ref2: http://jqfundamentals.com/chapter/events
sumber
Nonaktifkan:
Memungkinkan:
sumber
Metode preventDefault () antarmuka acara memberi tahu agen pengguna bahwa jika acara tidak ditangani secara eksplisit, tindakan defaultnya tidak boleh diambil seperti biasanya. Acara terus menyebar seperti biasa, kecuali salah satu pendengar acara memanggil stopPropagation () atau stopImmediatePropagation (), yang mana keduanya menghentikan propagasi sekaligus.
Memanggil preventDefault () selama setiap tahap aliran acara membatalkan acara, yang berarti bahwa tindakan default apa pun yang biasanya diambil oleh implementasi sebagai akibat dari peristiwa tidak akan terjadi.
Anda dapat menggunakan Event.cancelable untuk memeriksa apakah acara tersebut dapat dibatalkan. Memanggil preventDefault () untuk acara yang tidak dapat dibatalkan tidak berpengaruh.
sumber
Saya punya masalah ketika saya membutuhkan tindakan default hanya setelah beberapa tindakan kustom (mengaktifkan bidang input yang dinonaktifkan di formulir) telah selesai. Saya membungkus tindakan default (kirim ()) ke fungsi rekursif sendiri (dosubmit ()).
sumber
if (predef == true)
lebih eksplisit, Anda menambahkan 7 karakter ke kode JS Anda tanpa alasan.if (prevdef)
sama terbaca. Selain itu, Anda telah menambahkan pengendali acara anonim yang berlebihan saat.click(dosubmit)
melakukan hal yang sama.click(function(){dosubmit()})
karena tidak ada parameter yang diteruskan.Gunakan boolean:
Saya menggunakan ini di Aplikasi Web Progresif untuk mencegah pengguliran / perbesaran pada beberapa 'halaman' sambil mengizinkan yang lain.
sumber
Anda dapat mengatur untuk membentuk 2 kelas. Setelah Anda mengatur skrip JS Anda ke salah satunya, ketika Anda ingin menonaktifkan skrip Anda, Anda cukup menghapus kelas dengan skrip berikat dari formulir ini.
HTML:
JS
sumber
sumber
Saya tidak yakin Anda yang Anda maksudkan: tapi inilah solusi untuk masalah yang serupa (dan mungkin sama) ...
Saya sering menggunakan preventDefault () untuk mencegat item. Namun: itu bukan satu-satunya metode intersepsi ... sering kali Anda mungkin hanya ingin "pertanyaan" mengikuti perilaku mana yang berlanjut seperti sebelumnya, atau berhenti. Dalam kasus baru-baru ini saya menggunakan solusi berikut:
$("#content").on('click', '#replace', (function(event){ return confirm('Are you sure you want to do that?') }));
Pada dasarnya, "cegah default" dimaksudkan untuk mencegat dan melakukan sesuatu yang lain: "konfirmasi" dirancang untuk digunakan dalam ... mengonfirmasi dengan baik!
sumber