Вчера се натъкнах на добавката на Google Page Speed за Firebug. Страницата за използване на ефективни CSS селектори, за които се казва, че не използват overqualified селектори, т.е. използване #foo
вместо div#foo
, Мислех, че последното ще бъде по-бързо, но Google казва другояче и кой съм аз, за да се противопоставя на това?
Така че се чудех дали същото се отнася и за селекторите jQuery. Тази страница Намерих връзката на SO казва, че трябва да използвам $("div#foo")
, което правех през цялото време, тъй като си мислех, че нещата ще се ускорят чрез ограничаване на селектора да съвпадне div
само елементи. Но наистина ли е по-добре от писането $("#foo")
както казва Google за CSS селекторите, или CSS срещу jQuery съвпадение на елементите работят по различни начини и трябва да се $("div#foo")
?
Отговори:
5 за отговор № 1$("#foo")
по-добре е от $("div#foo")
Тъй като id е уникален в документа, не трябва да го поставяте с име на маркер.
Ето хубава връзка
1 за отговор № 2
Двигателят Sizzle Selector прави разбор на селекторите отдясно наляво.
Използвайте идентификатори колкото можете, за да подобрите производителността.
1 за отговор № 3
Колкото по-специфичен е селекторът, толкова по-бързо Sizzle (механизъм за избор на jQuery) намира този обект.
Причина: getElementsByTagName
се използва за ограничаване на търсенето до няколко случая.
Но това не важи за уникалните имена!