Saya memiliki div dengan kelas ini:
.news{
width:710px;
float:left;
border-bottom:1px #000000 solid;
font-weight:bold;
display:none;
}
Dan saya ingin dengan beberapa metode jQuery menghapus display itu: none; (sehingga div akan ditampilkan) dan kemudian menambahkannya lagi (sehingga div akan membayangi).
Bagaimana saya bisa melakukannya? Bersulang
$(".news").show()
? "jadi div akan membayangi" ... maksudmu itu akan menghilang ??$(".news").show()
bekerja! Sama$(".news").hide()
!!! Terima kasih;)$('.news').toggle();
Jawaban:
Untuk menyembunyikan
div
atau
dan untuk menunjukkan
div
:atau
sumber
jQuery memberi Anda:
Anda kemudian dapat dengan mudah menampilkan dan menyembunyikan elemen.
sumber
.show()
tidak atau menghapusdisplay: none
, melainkan meletakkandisplay: block
atauinline
bergantung pada elemen, dan itu bisa merusak tata letak jika elemen menggunakandisplay
gaya yang tidak biasa .element{display:none;}
di css Anda, tetapi di js Anda, gunakan jugaelement.hide()
di waktu yang sama. Ini akan memungkinkanshow()
fungsi untuk bekerja.Jadi, izinkan saya memberi Anda kode sampel:
Tautan akan menjadi pemicu untuk menampilkan div saat diklik. Jadi Javascript Anda akan menjadi:
Anda hampir selalu lebih baik membiarkan jQuery menangani gaya untuk menyembunyikan dan menampilkan elemen.
Sunting: Saya melihat orang-orang di atas merekomendasikan penggunaan
.show
dan.hide
untuk ini..toggle
memungkinkan Anda melakukan keduanya hanya dengan satu efek. Jadi itu keren.sumber
toggle
fungsinya. Sering kali jika Anda perlu mengklik sesuatu dan menampilkannya, Anda ingin fungsionalitasnya juga menyembunyikannya.Dalam JavaScript:
Di jQuery:
sumber
Gunakan sakelar untuk menampilkan dan menyembunyikan.
Lihat contoh yang berfungsi di http://jsfiddle.net/jNqTa/
sumber
.toggle()
itu tidak digunakan lagi sejak jQuery 1.9.saya sarankan menambahkan kelas untuk menampilkan / menyembunyikan elemen:
dan kemudian gunakan jquery's .toggleClass () untuk menampilkan / menyembunyikan elemen:
sumber
Satu-satunya cara untuk menghapus inline "display: none" melalui css-api jQuery adalah dengan menyetel ulang dengan string kosong (
null
TIDAK berfungsi btw !!).Menurut dokumen jQuery ini adalah cara umum untuk "menghapus" satu set properti gaya sebaris.
$("#mydiv").css("display","");
atau
$("#mydiv").css({display:""});
harus melakukan trik dengan benar.
IMHO ada metode yang hilang di jQuery yang bisa disebut "unhide" atau "mengungkapkan" yang alih-alih hanya mengatur properti gaya inline lain membatalkan nilai tampilan dengan benar seperti dijelaskan di atas. Atau mungkin
hide()
harus menyimpan nilai inline awal danshow()
harus mengembalikan ...sumber
Fungsi .show () dan .hide () jQuery mungkin adalah pilihan terbaik Anda.
sumber
Anda tidak memberi kami banyak informasi tetapi secara umum ini mungkin solusi:
sumber
$(".news").show()
dan$(".news").hide()
;)Untuk beberapa alasan, toggle tidak berfungsi untuk saya, dan saya menerima kesalahan
uncaught type error toggle is not a function
saat memeriksa elemen di browser. Jadi saya menggunakan kode berikut dan itu mulai bekerja untuk saya.File script jquery bekas
jquery-2.1.3.min.js
.sumber
Jika Anda memiliki banyak elemen yang Anda ingin
.hide()
atau.show()
, Anda akan membuang banyak sumber daya untuk melakukan apa yang Anda inginkan - bahkan jika menggunakan.hide(0)
atau.show(0)
- parameter 0 adalah durasi animasi.Berbeda dengan Prototype.js
.hide()
dan.show()
metode yang hanya digunakan untuk memanipulasi atribut tampilan elemen, implementasi jQuery lebih kompleks dan tidak disarankan untuk sejumlah besar elemen.Dalam kasus ini Anda mungkin harus mencoba
.css('display','none')
untuk menyembunyikan dan.css('display','')
menunjukkan.css('display','block')
harus dihindari, terutama jika Anda bekerja dengan elemen sebaris, baris tabel (sebenarnya elemen tabel apa pun), dll.sumber
Mempertimbangkan komentar lolesque untuk jawaban terbaik, Anda dapat menambahkan atribut atau kelas untuk menampilkan / menyembunyikan elemen dengan properti tampilan yang berbeda dari biasanya, jika situs Anda memerlukan kompatibilitas mundur, saya sarankan membuat kelas dan menambahkan / menghapusnya untuk ditampilkan / tampilkan elemennya
Ganti blok-sebaris dengan metode tampilan pilihan Anda dan gunakan jquerys addclass https://api.jquery.com/addclass/ dan hapus kelas https://api.jquery.com/removeclass/ daripada tampilkan / sembunyikan, jika mundur kompatibilitas tidak masalah, Anda dapat menggunakan atribut seperti ini.
Dan gunakan jquerys attr () http://api.jquery.com/attr/ untuk menampilkan dan menyembunyikan elemen.
Metode apa pun yang Anda sukai membuat Anda dapat dengan mudah mengimplementasikan animasi css3 saat menampilkan / menyembunyikan elemen dengan cara ini
sumber
Menggunakan
show()
penambahandisplay:block
sebagai penggantidisplay:hide
yang mungkin merusak barang.Untuk menghindarinya, Anda bisa memiliki kelas dengan properti
display:none
dan mengalihkan kelas itu untuk elemen itu dengantoggleClass()
.Tidak ada jawaban yang menyebutkan ini.
sumber