Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> баг jQuery с селекторами, с селекторами в IE6 
:(
    Опции темы
sharpshooter
Дата 18.2.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2009

Репутация: нет
Всего: нет



Привет.
Запостили на одном форуме ненавистники jquery следующий баг библиотеки в ie6:
На нижеуказанном дереве html
Код

A = $('body > span a'); alert('элементов:'+A.length);

везде выдаст 4(элемента), а в ie6 - 0.
Селектор вроде нужный, кто знает в чем дело?  Сам не могу разобраться - в принципе вижу что просмотр дерева вглубь обрывается на теге совпадающем с  стоящим сразу после > .

Весь код:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>jQuery 222222222222</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript" src="inc/jquery.js"></script>
<style>

</style>

</head>
<body >
<span>
  <i></i>
  <span>
    <i>
      <span>
        <div>
          <b>
            <a></a> <!-- Должен выбрать этот -->
          </b>
          <a></a> <!-- и этот -->
        </div>
      </span>
    </i>
    <span>
      <div>
        <b>
          <a></a> <!-- и этот -->
        </b>
        <a id='#test'></a> <!-- и этот -->
      </div>
    </span>
  </span>
</span>
</body>

<!--      XXXXXXXXXXXXXXXXXXXXXXX        -->
<br>
<button onClick="whatdo()" id="but1">Действие</button><br>

<script type="text/javascript">


function whatdo()
{
 
A = $('body > span a');
alert('элементов:'+A.length);

}


</script>
</html>

PM MAIL   Вверх
blah
Дата 18.2.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 25.9.2008
Где: моя тачка, чувак?

Репутация: нет
Всего: 17



ie6 не понимает дочерних селекторов и, не вдаваясь в супер сложные механизмы выгребания элементов, можно предположить что такая конструкция там просто не работает.

По-моему какие-то хилые ненавистники попались.
Код

A = $('body span:eq(1) a');


Это сообщение отредактировал(а) blah - 18.2.2010, 18:08
PM MAIL ICQ   Вверх
sharpshooter
Дата 19.2.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2009

Репутация: нет
Всего: нет



Цитата(blah @ 18.2.2010,  18:06)
ie6 не понимает дочерних селекторов 

но для этого то и есть jQuery - в ней нормально эти селекторы вообще работают. Только в данной ситуации косяк.
Причем такой код:
Код

A = $('body > span').find('a');

прекрасно справляется с задачей.

Меня просто немного удивила эта бага в ИЕ6 т.к. по сути же такие выборки - это тоже самое путешествие по дереву html методами DOM(интерфейс Node). И по моим наблюдениям эти средства кроссбраузерны во всех браузерах. Значит какая то фича в jQuery есть, что делает работу разной.

A = $('body span:eq(1) a');
Ваш код только для этого примера работает, а добавь еще одного прямого ребенка body и нет.
Вообще речь о том как работает jQuery с селекторами вида:
DIV+SPAN A
DIV>SPAN A

PM MAIL   Вверх
blah
Дата 19.2.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 25.9.2008
Где: моя тачка, чувак?

Репутация: нет
Всего: 17



Цитата(sharpshooter @  19.2.2010,  08:36 Найти цитируемый пост)
Ваш код только для этого примера работает, а добавь еще одного прямого ребенка body и нет.

Код

A = $('body span:eq(0) a');

Ну естественно.

Честно, специально порывшись в sizzle ничего не работающего в ie6 не нашел. И проблема не в jQ, а именно в sizzle. Да и если на то пошло, то селекторы такого вида не очень применимы в "повседневной жизни".


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.