Любая не CSS-фильтрация / выбор должны выполняться с помощью методов jQuery, так как это означает, что jQuery не может использовать CSS для ускорения селектора. Он пытается использовать встроенную поддержку CSS в браузере, но если вы используете :not
или :eq
и т. Д., Он должен использовать собственную систему синтаксического анализа, которая работает медленнее.
Воздушный кавычек "правильный" способ таков:
$('.toggle-button').filter(':gt(0)').length;
Относительно того, почему :not
ведет себя по-другому, я не уверен. Я продолжу думать, и если я получу лампочку, я обновлю этот ответ:)
Редактировать: похоже, это какая-то специфическая для браузера особенность - я только что сделал
$('.prettyprint').length
- 3
$('.prettyprint:not(:eq(0))').length
- 2
$('.question-header').length
- 1
$('.question-header:not(:eq(0))').length
- 0
Для этой страницы, когда я их делал, эти цифры были правильными и предсказуемыми. Дважды проверьте код на наличие глупых опечаток и тому подобного, потому что здесь все работает нормально.
Редактировать Редактировать: Это ошибка IE8, предположительно связанная с механизмом выбора CSS, который он использует. См. http://jsfiddle.net/5gSxP/2/ для краткого изложения трех методов выбора, первый сбой в IE8, но тот, что в этом ответе, работает нормально.