input [name = chkbox] становится самым быстрым селектором jQuery на моей машине под IE7.
Unchecking Took 2453ms
Checking Took 2438ms
Unchecking Took 2438ms
Checking Took 2437ms
Unchecking Took 2453ms
Checking Took 2438ms
input.chkbox и ...
Unchecking Took 2813ms
Checking Took 2797ms
Unchecking Took 2797ms
Checking Took 2797ms
Unchecking Took 2813ms
Checking Took 2797ms
вход: checkbox.chkbox кажется связанным
Unchecking Took 2797ms
Checking Took 2797ms
Unchecking Took 2813ms
Checking Took 2781ms
.chkbox почти вдвое дольше, чем input.chkbox
Unchecking Took 4031ms
Checking Took 4062ms
Unchecking Took 4031ms
Checking Took 4062ms
Javascript для цикла, безусловно, является худшим в:
Checking Took 149797ms
150 секунд! Он также блокирует браузер. Это просто делает меня действительно впечатленным jQuery. Я, честно говоря, не ожидал, что это будет так медленно. Возможно, потому что я прохожу через каждый отдельный элемент, который потом приходится искать ...
Мне это тоже было довольно интересно:
вход [ID = 'chkbox']
Unchecking Took 3031ms
Checking Took 3016ms
заняло меньше времени, чем:
вход [ID = 'chkbox'] [тип = 'Флажок']
Unchecking Took 3375ms
Checking Took 3344ms
Я думал, так как я разместил больше фильтров, это будет быстрее. Неа!
Задание еще большего числа путей к флажку делает его медленнее:
# myTable tr [id ^ = 'row'] input [id ^ = 'chkbox'] [type = 'checkbox']
Checking Took 10422ms
Он даже не запускал вторую проверку, поскольку спросил, хочу ли я продолжать запускать сценарии на моем компьютере. Псих! : P
Обновление Утро 4/14:
Кто-то поднял настройку контекста: на самом деле я сделал несколько из них и многое к своему удивлению, и вопреки тому, что многие люди говорили в Интернете в IE7, они были медленнее ! Вот моменты, когда я получал несколько разных контекстов, указанных в сочетании с более быстрым селектором выше:
"input.chkbox", "tr"
Checking Took 8546ms
"input.chkbox", "tr.myRow"
Checking Took 8875ms
"input.chkbox", "# form1"
Unchecking Took 3032ms
Checking Took 3000ms
"input.chkbox", "#myTable"
Unchecking Took 2906ms
Checking Took 2875ms
Текущий победитель (все еще): input [name = chkbox]
Unchecking Took 2469ms
Checking Took 2453ms
"input [name = chkbox]", "tr.myRow"
Checking Took 9547ms
"input [name = chkbox]", "# form1"
Unchecking Took 3140ms
Checking Took 3141ms
"input [name = chkbox]", "#myTable"
Unchecking Took 2985ms
Checking Took 2969ms
Обновление 2 Утро 4/14
Думал, что мог бы быть лучше после того, как заметил синтаксическое отличие от http://beardscratchers.com/journal/jquery-its-all-about-context. Кажется, что они НЕ совпадают с , они дают немного лучшие времена, но все же не бьют неконтекстный селектор - штопать.
"input [name = chkbox]", $ ("# form1")
Unchecking Took 3078ms
Checking Took 3000ms
Unchecking Took 3078ms
Checking Took 3016ms
"input [name = chkbox]", $ ("# myTable")
Unchecking Took 2938ms
Checking Took 2906ms
Unchecking Took 2938ms
Checking Took 2921ms
Обновление 3 Утро 4/14
Расс хотел, чтобы я попробовал это, они де / выбрали ВСЕ коробки, но опять же было интересно:
: Флажок
Unchecking Took 8328ms
Checking Took 6250ms
вход: Флажок
Unchecking Took 5016ms
Checking Took 5000ms
-> Самый быстрый?!?! * * +1137 ввод [тип = флажок] * * тысячи сто тридцать девять
Unchecking Took 4969ms
Checking Took 4938ms
Тот факт, что третье место является самым быстрым, довольно интересен, поскольку это противоречит тому, что я мог бы подумать. Почему бы (по крайней мере, для IE7) флажок: просто использовать флажок type =, чтобы добиться более быстрого времени? Это очень близкие результаты, но проверка заняла на 62 мс меньше времени. Кроме того, почему первые два отличаются вообще? Есть ли другой элемент помимо входного, который может иметь флажок?