Ищите информацию о внутренней реализации механизма выбора jQuery (sizzle) - PullRequest
1 голос
/ 27 июля 2011

Я ищу информацию о том, что Sizzle (jQuery) делает внутренне, когда вы запускаете селектор против него. В идеале либо кто-то, кто написал статью / блог о том, как работают разные браузеры, либо сайт, который может декомпилировать селектор для разных браузеров. В частности, у меня есть команда, которая говорит, что написанный мной код блокирует IE7 на очень больших наборах данных:

.find('.row:not(.row-0) .col-' + colN + ':not(.forbid-transfer)')

И это изменилось на:

.find('.row:not(.row-0) .col-' + colN).filter(':not(.forbid-transfer)')

исправляет проблему со скоростью.

Для меня это полная wtf , так как я предполагаю, что эти два идентичны в двигателе, но, очевидно, это не так. Обратите внимание, что all в родительском контейнере является div, поэтому изменение этого значения на div.row... div.col.... не должно ничего ускорять.

1 Ответ

0 голосов
/ 27 июля 2011

Могу поспорить, что

.find('.row:not(.row-0)').find('.col-' + colN).filter(':not(.forbid-transfer)')

будет еще быстрее в IE7, возможно, не в браузере, который поддерживает querySelectorAll ().Даже с этим, это зависит от особенностей страницы.

...