Apakah $ (document). Sudah diperlukan?


111

Saya melihat pertanyaan ini di stackoverflow tetapi tidak merasa bahwa itu dijawab sama sekali.

Apakah $(document).readyperlu?

Saya menautkan semua javascript saya di bagian bawah halaman jadi secara teori semuanya berjalan setelah dokumen siap.


3
Peramban lama mungkin tidak menikmati pengunduhan paralel yang digunakan peramban baru. Itulah alasan utama skrip Anda ditempatkan di bagian bawah. Ini secara khusus memungkinkan HTML dan CSS Anda untuk dirender pertama kali di browser lama. Pada titik ini, Anda memiliki pilihan untuk menentukan bagaimana Anda ingin mencapai penginderaan bahwa DOM dimuat. Dua metode populer untuk memulai js Anda adalah window.onload & $ (document) .ready (dalam hubungannya dengan jQuery). Ada opsi lain & mudah dicari, kelemahan yang jelas untuk window.onload. Intinya adalah $ (dokumen). Sudah bekerja lebih sering daripada tidak & mudah digunakan.
BradChesney79

Jawaban:


125

Apakah $(document).readyperlu?

tidak

jika Anda telah menempatkan semua skrip Anda tepat sebelum </body>tag penutup, Anda telah melakukan hal yang persis sama.

Selain itu, jika skrip tidak perlu mengakses DOM, tidak masalah di mana ia dimuat di luar kemungkinan ketergantungan pada skrip lain.

Untuk banyak CMS, Anda tidak memiliki banyak pilihan di mana skrip dimuat, jadi ini adalah bentuk yang baik untuk kode modular untuk menggunakan document.readyacara tersebut. Apakah Anda benar-benar ingin kembali dan men-debug kode lama jika Anda menggunakannya kembali di tempat lain?

menyimpang dari topik:

Sebagai catatan tambahan: Anda harus menggunakan jQuery(function($){...});alih-alih $(document).ready(function(){...});memaksakan alias $.


Apakah Anda yakin itu "hal yang sama persis"? Saya mendapat kesan bahwa css Anda (atau kode lain yang dimuat secara paralel dengan html utama) mungkin belum sepenuhnya diurai.
Zach Lysobey

6
@ZachL, dokumen mungkin sudah siap sebelum CSS diurai sepenuhnya. document.ready tidak sama dengan onloadacara, di mana gambar dan aset eksternal lainnya telah selesai dimuat.
zzzzBov

Terimakasih atas klarifikasinya.
Zach Lysobey

5
"Tidak" ini hanya menghabiskan waktu 3 jam kerja .. pastikan kamu tidak salah </body> dengan <body> :)
teejay

1
Saya belum tentu setuju dengan memaksa alias, terutama jika noConflict()perlu digunakan karena alasan tertentu.
Jay Blanchard

22

Tidak, jika javascript Anda adalah yang terakhir sebelum ditutup, Anda tidak perlu menambahkan tag tersebut.

Sebagai catatan tambahan, singkatan dari $ (document] .ready adalah kode di bawah ini.

$(function() {
// do something on document ready
});

Pertanyaan ini mungkin bagus. Apakah kamu membacanya? jQuery: Mengapa menggunakan document.ready jika JS eksternal di bagian bawah halaman?


6
Pertanyaannya pada dasarnya adalah "Apakah saya membutuhkan dokumen yang siap sama sekali ketika saya meletakkan skrip saya di bagian bawah tubuh?", Bukan "Apakah ada cara pintas untuk menulis $(document).ready()".
nnnnnn

4

Tidak, itu tidak perlu asalkan Anda tahu Anda tidak mengalami hal yang ditangguhkan - dan dalam kebanyakan kasus Anda akan tahu jika Anda telah mengembangkan apa yang Anda kerjakan dari atas ke bawah.

--Jika Anda memasukkan kode orang lain, tanpa mengauditnya secara menyeluruh, Anda tidak tahu.

Jadi, tanyakan pada diri Anda apakah Anda menggunakan kerangka kerja atau editor yang membantu Anda dengan struktur? Apakah Anda membawa kode orang lain dan Anda tidak repot-repot membaca setiap file? Apakah Anda siap melalui matriks Sistem Operasi, Browser, dan Versi Browser untuk menguji kode Anda? Apakah Anda perlu memeras setiap ons kecepatan dari kode Anda?

document.ready () membuat banyak dari pertanyaan tersebut menjadi tidak relevan. document.ready () dirancang untuk membuat hidup Anda lebih mudah. Itu datang pada hit kinerja kecil (dan saya berani mengatakan dapat diterima).


Hanya sesuatu yang saya lihat - salah satu hasil edit Anda ditolak, tetapi menurut saya tidak masalah. Anda mungkin ingin mengirim ulang yang itu: stackoverflow.com/review/suggested-edits/3224385
Qantas 94 Heavy

1

Saya telah melihat referensi / posting blog di internet tentang penggunaan jquery document.ready. Menurut pendapat saya, baik menggunakan atau meletakkan semua javascript Anda di bagian bawah halaman sama-sama valid. Dan sekarang pertanyaannya adalah mana yang lebih baik? Ini hanya masalah gaya pemrograman.


0

Tidak, itu tidak perlu. Anda dapat meletakkan tag skrip tepat sebelum tag penutup badan atau jika Anda mendukung IE9 + Anda dapat menggunakan JS asli.

<script>alert('DOM Loaded!');</script>
</body>

<script>
document.addEventListener("DOMContentLoaded", function(event) { 
      // DOM has loaded ready to fire JS scripts
    });
</script>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.