Всплывающее меню CSS с jQuery в IE6 - PullRequest
2 голосов
/ 23 июня 2010

У меня есть очень простая функция jQuery, которая позволяет ul.lev2 отображаться при наведении.

$('#tab_menu li.li_level1').hover(
  function() { $('#tab_menu ul.li_level2', this).css('display', 'block'); },
  function() { $('#tab_menu ul.li_level2', this).css('display', 'none'); });

К сожалению, это не работает с моей HTML-разметкой.Я действительно не могу найти, что идет не так.

HTML:

<div class="tab_menu menudefault" id="tab_menu">
<ul id="tab_menu_ul" class="level_1">
<li class="reserves level_1 parent parent_level_1 parent_ parent_level_1_ ">
            <span class="reserves level_1 parent parent_level_1 parent_ parent_level_1_  menuitem">123</span>
      <ul class="level_2 child_of_Reserves">
          <li class="find_a_nature_reserve level_2 parent parent_level_2 parent_ parent_level_2_ ">
              <span class="find_a_nature_reserve level_2 parent parent_level_2 parent_ parent_level_2_  menuitem">abc</span>
             </li>
          <li class="visitor_information level_2 noline child lastlev2 last">
              <a href="#" class="visitor_information level_2 noline child lastlev2 last menuitem">cde</a>
          </li>
            </ul>
        </li>
</ul>
</div>

Всякий раз, когда я удаляю $ (this) из jQuery, это, кажется, работает, но у меня есть более одного тега li сul.lev2, таким образом, он явно пихает все дочерние теги ul всякий раз, когда я парю над родителем li.

Любые идеи, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 23 июня 2010
$('#tab_menu ul.li_level2', this)

Вы говорите, что выбираете ul.li_level2 элементы где-то внутри #tabmenu, где-то внутри this. Поскольку this является элементом 1-го уровня, вы никогда не найдете #tabmenu внутри this!

Это «селектор области действия». Требуется, чтобы самый левый элемент в селекторе (#tabmenu) находился внутри узла контекста (this), а не только самый правый элемент, который вы фактически выбираете.

Вы, вероятно, имели в виду:

$('ul.li_level2', this)

Поскольку this всегда внутри #tab_menu, вам не нужно проверять это.

В контекстных узлах jQuery всегда есть селектор области видимости. Это отличается от методов Selectors-API , таких как document.querySelector(), которые будут работать с вашим примером, поскольку выбранный ul.li_level2 находится как внутри #tab_menu, так и внутри this. ( Selectors-API Level 2 предлагает ввести селекторы с областью действия также в качестве стандарта уровня браузера, но никто еще не внедрил его.)

1 голос
/ 23 июня 2010

эм .. Вы пытаетесь получить доступ к

$('ul.li_level2', this)

, но я не существует в опубликованном вами коде.вы должны найти

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