Saya berasumsi bahwa jika saya menonaktifkan div, semua konten juga akan dinonaktifkan.
Namun, kontennya berwarna abu-abu tetapi saya masih bisa berinteraksi dengannya.
Apakah ada cara untuk melakukan itu? (nonaktifkan div dan nonaktifkan semua konten juga)
javascript
jquery
html
juan
sumber
sumber
Gunakan kerangka kerja seperti JQuery untuk melakukan hal-hal seperti:
Nonaktifkan Dan Aktifkan Elemen Input Dalam Blok Div Menggunakan jQuery akan membantu Anda!
Pada jQuery 1.6, Anda harus menggunakan
.prop
alih-alih.attr
menonaktifkan.sumber
Saya hanya ingin menyebutkan metode ekstensi ini untuk mengaktifkan dan menonaktifkan elemen . Saya pikir ini cara yang jauh lebih bersih daripada menambahkan dan menghapus atribut secara langsung.
Maka Anda cukup melakukan:
sumber
Berikut adalah komentar cepat untuk orang-orang yang tidak membutuhkan div tetapi hanya blockelement. Di HTML5
<fieldset disabled="disabled"></fieldset>
mendapat atribut yang dinonaktifkan. Setiap elemen formulir dalam bidang yang dinonaktifkan dinonaktifkan.sumber
Atribut yang dinonaktifkan bukan bagian dari spesifikasi W3C untuk elemen DIV , hanya untuk elemen formulir .
Pendekatan jQuery yang disarankan oleh Martin adalah satu-satunya cara yang sangat mudah untuk mencapai ini.
sumber
mirip dengan solusi cletu, tetapi saya mendapat kesalahan menggunakan solusi itu, ini solusinya:
bekerja dengan baik pada saya
sumber
Anda dapat menggunakan pernyataan CSS sederhana ini untuk menonaktifkan acara
sumber
Browser yang diuji: IE 9, Chrome, Firefox dan jquery-1.7.1.min.js
sumber
Kontrol masukan HTML dapat dinonaktifkan menggunakan atribut 'dinonaktifkan' seperti yang Anda ketahui. Setelah atribut 'dinonaktifkan' untuk kontrol input diatur, penangan peristiwa yang terkait dengan kontrol tersebut tidak dipanggil.
Anda harus mensimulasikan perilaku di atas untuk elemen HTML yang tidak mendukung atribut 'dinonaktifkan' seperti div, jika Anda mau.
Jika Anda memiliki div, dan Anda ingin mendukung klik atau acara utama pada div itu, maka Anda harus melakukan dua hal: 1) Ketika Anda ingin menonaktifkan div, atur atribut yang dinonaktifkan seperti biasa (hanya untuk mematuhi konvensi) 2) Dalam klik div Anda dan / atau penangan kunci, periksa apakah atribut yang dinonaktifkan ditetapkan pada div tersebut. Jika ya, abaikan saja peristiwa klik atau kunci (mis. Kembalikan segera). Jika atribut yang dinonaktifkan tidak disetel, maka lakukan klik div dan / atau logika peristiwa utama Anda.
Langkah-langkah di atas juga tidak tergantung pada browser.
sumber
Salah satu cara untuk mencapai hal ini adalah dengan menambahkan alat bantu yang dinonaktifkan untuk semua anak div. Anda dapat mencapai ini dengan sangat mudah:
$("#myDiv")
menemukan div,.find("*")
membuat Anda semua simpul anak di semua tingkatan dan.prop('disabled', true)
menonaktifkan masing-masing.Dengan cara ini semua konten dinonaktifkan dan Anda tidak dapat mengekliknya, tabnya, gulir, dll. Selain itu, Anda tidak perlu menambahkan kelas css.
sumber
Bungkus
div
dalamfieldset
tag:sumber
Saya pikir saya akan membuat beberapa catatan.
sumber
Ini untuk para pencari,
Yang terbaik yang saya lakukan adalah,
sumber
Seperti disebutkan dalam komentar, Anda masih dapat mengakses elemen dengan menavigasi antar elemen dengan menggunakan tombol tab. jadi saya merekomendasikan ini:
sumber
Jika Anda ingin menjaga semantik dinonaktifkan sebagai berikut
Anda bisa menambahkan CSS berikut
manfaatnya di sini adalah Anda tidak bekerja dengan kelas di div yang ingin Anda ajak bekerja sama
sumber
Saya akan menggunakan versi perbaikan fungsi Cletus:
Yang menyimpan properti 'cacat' asli elemen.
sumber
Cara menonaktifkan konten DIV
pointer-events
Properti CSS saja tidak menonaktifkan elemen anak dari pengguliran, dan itu tidak didukung oleh IE10 dan di bawah untuk elemen DIV (hanya untuk SVG). http://caniuse.com/#feat=pointer-eventsUntuk menonaktifkan konten DIV pada semua browser.
Javascript:
Css:
Untuk menonaktifkan konten DIV di semua browser, kecuali IE10 dan di bawah.
Javascript:
Css:
sumber
Di bawah ini adalah solusi yang lebih komprehensif untuk mengaktifkan divs masking
Termasuk juga adalah hourglassOn dan hourglassOff yang dapat digunakan secara terpisah
Dengan ini bisa Anda lakukan misalnya:
lihat jsfiddle
sumber
sumber
Atau cukup gunakan css dan kelas "cacat".
Catatan: jangan gunakan atribut yang dinonaktifkan.
Tidak perlu dipusingkan dengan jQuery on / off.
Ini jauh lebih mudah dan berfungsi lintas browser:
Kemudian Anda dapat mematikan dan mematikannya saat menginisialisasi halaman Anda, atau mengubah tombol
sumber
Cara lain, di jQuery, adalah untuk mendapatkan tinggi bagian dalam, lebar bagian dalam dan posisi dari DIV yang berisi, dan hanya melapisi DIV lain, transparan, di atas ukuran yang sama. Ini akan bekerja pada semua elemen di dalam wadah itu, bukan hanya input.
Ingat juga, dengan JS dinonaktifkan, Anda masih dapat menggunakan input / konten DIV. Hal yang sama berlaku dengan jawaban di atas juga.
sumber
sumber
Solusi css / noscript ini hanya menambahkan overlay di atas fieldset (atau div atau elemen lain), mencegah interaksi:
Jika Anda menginginkan overlay transparan yang tak terlihat, atur latar belakang ke mis rgba (128.128.128,0), karena itu tidak akan berfungsi tanpa latar belakang. Di atas berfungsi untuk IE9 +. Css yang jauh lebih sederhana berikut ini akan berfungsi pada IE11 +
Chrome
sumber
Jika Anda hanya mencoba untuk menghentikan orang mengklik dan tidak terlalu khawatir tentang keamanan - Saya telah menemukan div ditempatkan mutlak dengan indeks-z 99999 macam itu baik-baik saja. Anda tidak dapat mengklik atau mengakses konten apa pun karena div diletakkan di atasnya. Mungkin sedikit lebih sederhana dan merupakan solusi hanya CSS hingga Anda perlu menghapusnya.
sumber
Ada pustaka javascript yang dapat dikonfigurasi yang mengambil string html atau elemen dom dan menghapus tag dan atribut yang tidak diinginkan. Ini dikenal sebagai html sanitizers . Sebagai contoh:
Misalnya Di DOMPurify
sumber
EDIT: Di bawah ini saya telah menggunakan
.on()
metode, alih-alih menggunakan.bind()
metodeuntuk menghapus pengaturan Anda, Anda dapat menggunakan
.unbind()
metode. Padahal.off()
metode ini tidak berfungsi seperti yang diharapkan.Setelah meneliti ratusan solusi! belajar tentang pointer-events, di bawah ini adalah apa yang saya lakukan.
Seperti @Kokodoko disebutkan dalam solusinya yang cocok untuk semua browser kecuali IE.
pointer-events
bekerja di IE11 dan bukan di versi yang lebih rendah. Saya juga perhatikan di IE11 , pointer-events tidak berfungsi pada elemen anak. Dan karenanya jika kita memiliki sesuatu seperti di bawah inidi mana span -adalah elemen anak , pengaturan
pointer-events: none
tidak akan bekerjaUntuk mengatasi masalah ini saya menulis sebuah fungsi yang dapat bertindak sebagai pointer-events untuk IE dan akan bekerja di versi yang lebih rendah.
Dalam File JS
Dalam File CSS
Dalam HTML
Ini memalsukan
pointer-events
skenario di manapointer-events
tidak berfungsi dan ketika kondisi di atas elemen anak terjadi.JS Fiddle untuk hal yang sama
sumber
lihat pemilih saya
yang
fieldsetUserInfo
adalah div berisi semua masukan saya ingin dinonaktifkan atau AktifkanSemoga ini bisa membantu Anda
sumber