SORU
5 Mart 2013, Salı


JQuery seçiciler geçişi tercih edilir?

$("#vacations").find("li").last() $("#vacations li:last") Daha iyi bir uygulamadır kullanarak?

Arka plan ve düşüncelerim:

Güzel bir interaktif try jQuery tutorial ile oynuyor ve diyor ki: görevlerden biri de bendim

Kodunuz üzerinden bakıyor gibi, bir başkası ile son tatil seçerken dikkat edin: ("#tatil li:last"). $ Şuna bir bakın ve düşünün, "Geçişi bu şekilde daha hızlı olur!" Bu düşünceler hareket, bu kod son li içinde bulmak için yeniden oluşturulması gerekir #tatil yerine geçişi kullanarak.

Neden bu kadar düşünüyorsun ki? Benim için seçiciler kullanım geçme den biraz daha yüksek seviyede görünüyor. Seçici belirterek olduğumda aklımda daha iyi ihtiyacım olan tek sonuç (geçici sonuçlar dönen gerek kalmadan) nasıl bir WordPress kullanmak için.

Kompozit seçiciler kullanarak ekstra yükü nedir? Seçiciler mantık geçerli uygulama sadece dize ayrıştırır ve geçişi API kullandığı için mi? Yavaş bir dize ayrıştırma? Gelecek bir uygulama geçici sonuçlar döndürmek için gerekli değildir, bu gerçeği kullanır ve geçişi daha hızlı olacak bir şans var mı?

CEVAP
5 Mart 2013, Salı


Bu kadar kısa ve net cevap yok, ama kullandığınız :last seçici ile ilgili olarak, Seçiciler API standart için özel bir uzantısı. Bu nedenle, geçerli .querySelectorAll yerli yöntemi ile kullanmak için değil.

Cızırtı yapar .querySelectorAll, ile seçici kullanmayı deneyin temelde ve eğer bir İstisna geçersiz bir seçici dolayı atar, tamamen JavaScript tabanlı bir DOM seçimi/filtreleme için varsayılan olacak.

:last gibi seçiciler dahil olmak üzere, bunun anlamı, yerel kod ile DOM seçimi hızı artırmak değil neden olur.

Ayrıca, iyileştirmeler dahil böylece seçici ise çok basit, sadece bir KİMLİK ya da bir öğe adı, yerli getElementById getElementsByTagName kullanılacak olan son derece hızlı; genellikle daha hızlı daha querySelectorAll.

Ve .last() yöntem sadece Cızırtı filtreler normalde ne hangi tüm öğeleri, filtreleme yerine koleksiyonunda son öğeyi kapmak beri(en azından eskiden)bu da bir destek verecektir.

IMO, özel eşyaları uzak tutun. .querySelectorAll hemen hemen her yerde artık, yalnızca standartlarla uyumlu seçiciler kullanarak gerçek avantajları vardır. Başka post DOM seçimi filtreleme yapmak.


$("#vacations").find("li"), Bu durumda geçici sonuçları hakkında endişe. Bu getElementById getElementsByTagName, ardından kullanır ve son derece hızlı olacak.

Eğer gerçekten süper hız konusunda endişeleriniz varsa, DV kullanımınızı azaltmak ve DOM doğrudan kullanın.


Şu anda performans kaybı hakkında sizi uyarır :last gibi: seçiciler için docs notları bulabilirsiniz

Son bir WordPress kullanmak bir uzantısıdır ve CSS belirtimi bir parçası değil, çünkü sorgular :last kullanarak performansı artırmak querySelectorAll() yerli DOM yöntemi tarafından sağlanan yararlanın. :last öğeleri seçmek için kullanırken en iyi performansı elde etmek için, ilk elementler saf CSS seçici kullanarak seçin .filter(":last") kullanın.

Ama .filter(":last") iyi bir yedek olur ki katılmıyorum. Çok daha iyi bir set filtreleme yerine unsuru doğrudan hedef .last() gibi yöntemler olacaktır. Onlar sadece insanların olmayan standartlarla uyumlu seçiciler kullanmaya devam etmek istiyor gibi bir his var içimde. IMO, daha iyi sadece onları unutuyorsun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Benjamin Heckendorn

    Benjamin Hec

    4 Mayıs 2008
  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012
  • Mr. H

    Mr. H

    1 Temmuz 2012