Apakah mungkin untuk mengaktifkan visibilitas elemen, menggunakan fungsi .hide()
, .show()
atau .toggle()
?
Bagaimana Anda menguji apakah suatu elemen adalah visible
atau hidden
?
javascript
jquery
dom
visibility
Philip Morton
sumber
sumber
$(element).is(":visible")
berfungsi untuk jQuery 1.4.4, tetapi tidak untuk jQuery 1.3.2, di bawah Internet & nbsp; Explorer & nbsp; 8 . Ini dapat diuji menggunakan cuplikan uji Tsvetomir Tsonev yang sangat membantu . Ingatlah untuk mengubah versi jQuery, untuk menguji masing-masing.Jawaban:
Karena pertanyaan mengacu pada satu elemen, kode ini mungkin lebih cocok:
Ini sama dengan saran twernt , tetapi diterapkan pada elemen tunggal; dan itu cocok dengan algoritma yang direkomendasikan di FAQ jQuery .
Kami menggunakan jQuery's is () untuk memeriksa elemen yang dipilih dengan elemen lain, pemilih atau objek jQuery apa pun. Metode ini melintasi sepanjang elemen DOM untuk menemukan kecocokan, yang memenuhi parameter yang diteruskan. Ini akan mengembalikan true jika ada kecocokan, jika tidak return salah.
sumber
visible=false
dandisplay:none
; sedangkan solusi Mote jelas menggambarkan niat pembuat kode untuk memeriksadisplay:none
; (via penyebutan hide and show yangdisplay:none
tidak mengontrolvisible=true
):visible
juga akan memeriksa apakah elemen induk terlihat, seperti yang ditunjukkan chiborg.display
properti. Mengingat bahwa pertanyaan aslinya adalah untukshow()
danhide()
, dan mereka mengaturdisplay
, jawaban saya benar. Ngomong-ngomong itu bekerja dengan IE7, berikut ini cuplikan uji - jsfiddle.net/MWZss ;Anda dapat menggunakan
hidden
pemilih:Dan
visible
pemilih:sumber
type="hidden"
hanyalah satu kasus yang dapat memicu: disembunyikan. Elemen tanpa tinggi dan lebar, elemen dengandisplay: none
, dan elemen dengan leluhur tersembunyi juga akan memenuhi syarat sebagai: tersembunyi.Metode di atas tidak mempertimbangkan visibilitas orang tua. Untuk mempertimbangkan orang tua juga, Anda harus menggunakan
.is(":hidden")
atau.is(":visible")
.Sebagai contoh,
sumber
hide()
,show()
dantoggle()
fungsi, namun, seperti yang telah dikatakan sebagian besar, kita harus menggunakan kelas:visible
dan:hidden
pseudo-class.Tidak satu pun dari jawaban ini yang menjawab apa yang saya pahami sebagai pertanyaan, yang merupakan apa yang saya cari, "Bagaimana saya menangani barang yang dimiliki
visibility: hidden
?" . Tidak:visible
juga tidak:hidden
akan menangani ini, karena keduanya mencari tampilan per dokumentasi. Sejauh yang saya bisa menentukan, tidak ada pemilih untuk menangani visibilitas CSS. Inilah cara saya mengatasinya (pemilih jQuery standar, mungkin ada sintaks yang lebih kental):sumber
visibility
secara harfiah, tetapi pertanyaannya adalahHow you would test if an element has been hidden or shown using jQuery?
. Menggunakan jQuery berarti:display
properti.visibility: hidden
atauopacity: 0
dianggap terlihat, karena masih mengkonsumsi ruang dalam tata letak. Lihat jawaban oleh Pedro Rainho dan dokumentasi jQuery pada:visible
pemilih.Dari Bagaimana cara saya menentukan keadaan elemen toggled?
Anda dapat menentukan apakah suatu elemen diciutkan atau tidak dengan menggunakan
:visible
dan:hidden
penyeleksi.Jika Anda hanya bertindak berdasarkan elemen berdasarkan visibilitasnya, Anda bisa memasukkan
:visible
atau:hidden
dalam ekspresi pemilih. Sebagai contoh:sumber
top:-1000px
... Tebak itu kasus tepiSeringkali ketika memeriksa apakah sesuatu terlihat atau tidak, Anda akan langsung pergi dan melakukan sesuatu yang lain dengannya. Chaining jQuery memudahkan ini.
Jadi jika Anda memiliki pemilih dan Anda ingin melakukan beberapa tindakan di atasnya hanya jika terlihat atau disembunyikan, Anda dapat menggunakan
filter(":visible")
ataufilter(":hidden")
diikuti dengan merantai dengan tindakan yang ingin Anda ambil.Jadi alih-alih
if
pernyataan, seperti ini:Atau lebih efisien, tetapi bahkan lebih jelek:
Anda dapat melakukan semuanya dalam satu baris:
sumber
The
:visible
pemilih menurut dokumentasi jQuery :Ini berguna dalam beberapa kasus dan tidak berguna dalam yang lain, karena jika Anda ingin memeriksa apakah elemen terlihat (
display != none
), mengabaikan visibilitas orang tua, Anda akan menemukan bahwa melakukan.css("display") == 'none'
tidak hanya lebih cepat, tetapi juga akan mengembalikan pemeriksaan visibilitas dengan benar.Jika Anda ingin memeriksa visibilitas alih-alih tampilan, Anda harus menggunakan:
.css("visibility") == "hidden"
.Juga pertimbangkan catatan jQuery tambahan :
Juga, jika Anda khawatir tentang kinerja, Anda harus memeriksa Sekarang Anda melihat saya ... tampilkan / sembunyikan kinerja (2010-05-04). Dan gunakan metode lain untuk menunjukkan dan menyembunyikan elemen.
sumber
Ini berfungsi untuk saya, dan saya menggunakan
show()
danhide()
membuat div saya tersembunyi / terlihat:sumber
Cara visibilitas elemen dan jQuery bekerja ;
Suatu elemen dapat disembunyikan dengan
display:none
,visibility:hidden
atauopacity:0
. Perbedaan antara metode-metode tersebut:display:none
menyembunyikan elemen, dan tidak memakan ruang apa pun;visibility:hidden
menyembunyikan elemen, tetapi masih membutuhkan ruang di tata letak;opacity:0
menyembunyikan elemen sebagai "visibility: hidden", dan masih membutuhkan ruang dalam tata letak; satu-satunya perbedaan adalah bahwa opacity memungkinkan seseorang untuk membuat elemen transparan;Metode beralih jQuery yang berguna:
sumber
visibility:hidden
danopacity:0
adalah bahwa elemen masih akan merespons acara (seperti klik) denganopacity:0
. Saya belajar bahwa trik membuat tombol kustom untuk unggahan file.Anda juga dapat melakukan ini menggunakan JavaScript biasa:
Catatan:
Bekerja di mana saja
Bekerja untuk elemen bersarang
Bekerja untuk CSS dan gaya inline
Tidak membutuhkan kerangka kerja
sumber
visibility: hidden
menjadi terlihat .Saya akan menggunakan kelas CSS
.hide { display: none!important; }
.Untuk menyembunyikan / menunjukkan, saya menelepon
.addClass("hide")/.removeClass("hide")
. Untuk memeriksa visibilitas, saya menggunakan.hasClass("hide")
.Ini adalah cara sederhana dan jelas untuk memeriksa / menyembunyikan / menampilkan elemen, jika Anda tidak berencana untuk menggunakan
.toggle()
atau.animate()
metode.sumber
.hasClass('hide')
tidak memeriksa apakah leluhur orang tua disembunyikan (yang akan membuatnya juga tersembunyi). Anda mungkin bisa membuat ini bekerja dengan benar dengan memeriksa jika.closest('.hide').length > 0
, tetapi mengapa menemukan kembali kemudi?Demo Link
Sumber:
Blogger Plug n Play - Alat dan Widget jQuery: Cara Melihat apakah Elemen disembunyikan atau Terlihat Menggunakan jQuery
sumber
Seseorang dapat menggunakan atribut
hidden
atauvisible
, seperti:Atau Anda dapat menyederhanakan sama dengan yaitu sebagai berikut.
sumber
ebdiv
harus diatur kestyle="display:none;"
. Ini berfungsi untuk menampilkan dan menyembunyikan:sumber
Jawaban lain yang harus Anda pertimbangkan adalah jika Anda menyembunyikan suatu elemen, Anda harus menggunakan jQuery , tetapi alih-alih menyembunyikannya, Anda menghapus seluruh elemen, tetapi Anda menyalin konten HTML dan tag itu sendiri ke dalam variabel jQuery, dan kemudian yang perlu Anda lakukan adalah menguji apakah ada tag seperti itu di layar, menggunakan normal
if (!$('#thetagname').length)
.sumber
Saat menguji elemen terhadap
:hidden
pemilih di jQuery, harus dipertimbangkan bahwa elemen yang diposisikan absolut dapat dikenali sebagai disembunyikan meskipun elemen turunannya terlihat .Ini tampaknya agak kontra-intuitif pada awalnya - meskipun melihat lebih dekat pada dokumentasi jQuery memberikan informasi yang relevan:
Jadi ini sebenarnya masuk akal dalam hal model kotak dan gaya yang dihitung untuk elemen. Bahkan jika lebar dan tinggi tidak diatur secara eksplisit ke 0, mereka dapat ditetapkan secara implisit .
Lihat contoh berikut:
Pembaruan untuk jQuery 3.x:
Dengan jQuery 3 perilaku yang dijelaskan akan berubah! Elemen akan dianggap terlihat jika mereka memiliki kotak tata letak, termasuk yang memiliki lebar nol dan / atau tinggi.
JSFiddle dengan jQuery 3.0.0-alpha1:
http://jsfiddle.net/pM2q3/7/
Kode JavaScript yang sama kemudian akan memiliki output ini:
sumber
Ini mungkin berhasil:
sumber
Contoh:
sumber
Untuk memeriksa apakah itu tidak terlihat saya gunakan
!
:Atau yang berikut ini juga sam, menyimpan pemilih jQuery dalam variabel untuk memiliki kinerja yang lebih baik ketika Anda membutuhkannya beberapa kali:
sumber
Gunakan toggling kelas, bukan pengeditan gaya. . .
Menggunakan kelas yang ditujukan untuk elemen "persembunyian" itu mudah dan juga salah satu metode yang paling efisien. Beralih kelas 'tersembunyi' dengan
Display
gaya 'tidak ada' akan melakukan lebih cepat daripada mengedit gaya itu secara langsung. Saya menjelaskan beberapa dari pertanyaan Stack Overflow ini. Mengubah dua elemen terlihat / tersembunyi di div yang sama .Praktik Terbaik dan Optimasi JavaScript
Berikut adalah video Google Tech Talk yang benar-benar mencerahkan oleh insinyur front-end Google Nicholas Zakas:
sumber
Contoh penggunaan cek yang terlihat untuk adblocker diaktifkan:
"ablockercheck" adalah ID yang blok adblocker. Jadi, periksa apakah terlihat Anda dapat mendeteksi apakah adblocker dihidupkan.
sumber
Bagaimanapun, tidak ada contoh yang cocok untuk saya, jadi saya menulis sendiri.
Tes (tidak ada dukungan Internet Explorer
filter:alpha
):a) Periksa apakah dokumen tidak disembunyikan
b) Periksa apakah suatu elemen memiliki lebar nol / tinggi / opacity atau
display:none
/visibility:hidden
dalam gaya inlinec) Periksa apakah pusat (juga karena lebih cepat daripada menguji setiap piksel / sudut) elemen tidak disembunyikan oleh elemen lain (dan semua leluhur, contoh:
overflow:hidden
/ gulir / satu elemen di atas yang lain) atau tepi layard) Periksa apakah suatu elemen memiliki lebar nol / tinggi / opasitas atau
display:none
/ visibilitas: disembunyikan dalam gaya yang dihitung (di antara semua leluhur)Diuji pada
Android 4.4 (Browser asli / Chrome / Firefox), Firefox (Windows / Mac), Chrome (Windows / Mac), Opera (Windows Presto / Mac WebKit), Internet Explorer (Internet Explorer 5-11 mode dokumen + Internet Explorer 8 pada mesin virtual), dan Safari (Windows / Mac / iOS).
Cara Penggunaan:
sumber
Anda perlu memeriksa keduanya ... Tampilan serta visibilitas:
Jika kami memeriksa
$(this).is(":visible")
, jQuery memeriksa kedua hal secara otomatis.sumber
Mungkin Anda bisa melakukan hal seperti ini
sumber
Cukup periksa visibilitas dengan memeriksa nilai boolean, seperti:
Saya menggunakan kode ini untuk setiap fungsi. Kalau tidak, Anda dapat menggunakan
is(':visible')
untuk memeriksa visibilitas suatu elemen.sumber
Karena
Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout
(seperti yang dijelaskan untuk jQuery: visible Selector ) - kita dapat memeriksa apakah elemen benar - benar terlihat dengan cara ini:sumber
Tetapi bagaimana jika elemen CSS seperti berikut ini?
Jadi jawaban ini untuk pertanyaan Stack Overflow. Bagaimana memeriksa apakah suatu elemen di luar layar juga harus dipertimbangkan.
sumber
Fungsi dapat dibuat untuk memeriksa atribut visibilitas / tampilan untuk mengukur apakah elemen ditampilkan di UI atau tidak.
Biola yang Bekerja
sumber
Juga inilah ekspresi kondisional ternary untuk memeriksa keadaan elemen dan kemudian beralih:
sumber
$('elementToToggle').toggle('slow');
...:)
sumber