jQuery псевдо-селектор ": не" IE7 не работает? - PullRequest
0 голосов
/ 24 февраля 2011

Использование Firebug Lite в IE 7 с jQuery 1.4.4. Я пытаюсь получить все элементы ".step" <div/>, которые не являются первыми (сейчас их 2 или 3, но предполагается произвольное количество шагов). Работает в FF и Webkit, но заметил, что тот же селектор :not с :first не выбирает те же элементы в IE7. JQuery ошибка? Должно ли это работать? Можете ли вы предложить альтернативный способ выбора этих предметов?

# Firebug Lite console
>>> $('.step')
[div#step_1.step, div#step_2.step, div#step_3.step]
>>> $('.step:first')
[div#step_1.step]
>>> $('.step:not(:first)')
[div#step_1.step, div#step_2.step, div#step_3.step]

Ответы [ 3 ]

3 голосов
/ 24 февраля 2011

Это не ответ на проблему IE7, но это обходной путь и, возможно, лучший способ сделать это в целом.

Вместо:

$('.step:not(:first)')

сделать это:

$('.step').slice(1);

Теперь вы используете простой селектор, действительный для querySelectorAll, и просто разбиваете его на все, кроме первого совпадения.

В целом он должен работать лучше дляВы.


РЕДАКТИРОВАТЬ:

Кажется, есть открытая ошибка в отношении :not(:first) в IE 7.

Вотссылка: http://bugs.jquery.com/ticket/4028

0 голосов
/ 10 июля 2013

Метод .not () рекомендуется для селектора псевдокласса: не в документации jQuery для удобства чтения, но: также не имеет ужасных последствий для производительности.Пропуск названий тегов делает то же самое во многих случаях.Тестируя в IE8, я обнаружил, что метод .not () примерно в тридцать четыре раза быстрее, чем селектор псевдокласса: not.

Я согласен с user113716, что метод .slice, вероятно, лучше здесь, но для тех, ктовозникли проблемы с: не в аналогичной ситуации, я бы предложил что-то вроде этого:

$('div.step').not('div:first')
0 голосов
/ 24 февраля 2011

Вы можете использовать

$('.step:gt(0)')

, но в настоящее время IE7 не подходит для тестирования, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...