DOM'mda böyle bir nesnenin en fazla 1 olduğunu biliyorsam, her zaman eklemem gerekir mi: öncelikle aramayı hızlandırmak için seçiciye mi? Seçim motorunun, eşleşen 1 eleman bulduktan sonra duracağını farz ediyorum, fakat filtrenin gerçekten bir şeyleri yavaşlattığından emin değilim.şunları belirtiyor: İlk olarak jquery seçici yardımında performans?
cevap
Hayır, (başka jQuery yalnızca kullanmayın varsayarak seçici sözdizimi).
jQuery, tüm seçiciyi alıp tarayıcının işi yapmasına izin vermekten daha yavaş olan, kendisi tarafından (muhtemelen Sizzle'ı kullanarak) ayrıştırır.
İnsan gözünün bunu gözlemleyebilmesi o kadar yavaş olmayacaktır, elbette, ama ** teoride ** yardımcı olmak yerine performansa zarar verir. Ve yine, bu sadece seçici tarayıcı CSS motoru ve dolayısıyla 'querySelectorAll() 'tarafından destekleniyorsa geçerlidir. – BoltClock
Yorumunuza: Bir sayfada hata ayıklamaya çalışırsanız, burada: ilk önce sözde sınıf seçicisi kullanılır, Chrome'un Geliştirici Araçları ile ilgili olarak "Komut Dosyası" sekmesinde "Yakalanmamış istisnalarda durakla" düğmesini etkinleştirebilirsiniz. altta). ': First' ile her seçiminizde 'querySelectorAll' içinde istisna görürsünüz (bkz. [Here] (http://www.trirand.com/blog/?page_id=393/bugs/small-performance-improvements-in-selectors/# p26631)). Birçok durumda ': ilk '' ilk-çocuk' ya da 'yerine: 'türüne (1)' ile değiştirilebilir. Bir: 'ilk '' kullanımı gerçekten yavaş değil, fakat döngüde bir farkı dolduruyor. – Oleg
Neredeyse doğru olan bir uygulama; Belirttiğiniz daha fazla seçici, motor ne kadar doğrulamak zorunda kalır.
Yani, sizin durumunuzda, bunun yalnızca bir tane olduğunu biliyorsanız, bunu belirtmeyin.
Ancak, aşağıdaki beyanıyla 100 deyin, bunu fark etmeyeceksiniz bile. :first
standart BB sözde sınıf değil ve senin selektör tarayıcılar destekleyerek uygulanan doğal querySelectorAll()
DOM işlevine geçirilemez neden olacaktır kullanma gibi
Bundan şüpheliyim. Tüm öğeleri aldığını, sonra ebeveynler kabındaki ilk element olup olmadığını kontrol ederdim. (soldan sağa). – Raynos