Селектор jQuery # id.classname в IE7 - PullRequest
5 голосов
/ 08 апреля 2011

Так что, по правде говоря, я даже не знаю, какие термины я бы искал, чтобы получить разумно нацеленный результат поиска для этого, поэтому я подумал, что надеюсь на быстрый ответ здесь. Поиски, которые я пробовал (включая связанные вопросы SO), не затронули эту конкретную проблему.

Каждый браузер в моем арсенале понимает следующий селектор jQuery и предупреждает правильную длину (2):

alert( jQuery('#course-contents.course-sidebar .folder').length );

Но не IE7. Это говорит мне, что есть ноль. С другой стороны, это:

alert( jQuery('.course-sidebar .folder').length );

Дает мне результат 2 в обоих местах. Что это за комбинация, которая дает IE7 подходит? Оба компонента необходимы в некоторых местах, поэтому я не хочу просто менять их. Если мой синтаксис шаткий, я хотел бы знать, почему.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 08 апреля 2011

Первый - это, конечно, более строгий селектор: учитываются только классы с тегом ID, это не поддерживается IE7 (или IE6 в этом отношении)

Второй селектор - это вседети класса боковой панели курса, независимо от того, где они появляются.

Действительно, IE имеет проблему с селектором # ID.class:

http://bytesizecss.com/blog/post/the-idclass-selector-in-ie6

http://csscreator.com/node/26521

http://code.google.com/p/ie7-js/issues/detail?id=29

2 голосов
/ 08 апреля 2011

Это задокументированная ошибка IE6 / 7 (опять ...), как предложено @ Peter .

Для обходного пути вы можете использовать

jQuery('.course-sidebar')
    .filter('#course-contents')
    .find('.folder')
    .length

или (используя context , менее читаемый)

jQuery('.folder', jQuery('.course-sidebar').filter('#course-contents')).length
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...