Меню навигации с использованием jQuery (из jQuery Cookbook) - PullRequest
0 голосов
/ 17 декабря 2011

В меню должны отображаться подпункты при наведении курсора. Вот код (от http://docs.jquery.com/Cookbook/Navigation):

   <ul id="menu">
    <li class="menu">Sub 1
     <ul>
      <li>test 1</li>
      <li>test 2</li>
      <li>test 3</li>
      <li>test 4</li>
    </ul>
   </li>

   <li class="menu">Sub 2
    <ul>
      <li>test 1</li>
      <li>test 2</li>
      <li>test 3</li>
      <li>test 4</li>
    </ul>
  </li>
</ul>

JQuery код:

$(document).ready(function() {
var toggle = function(direction, display) {
return function() {
  var self = this;
  var ul = $("ul", this);
  if( ul.css("display") == display && !self["block" + direction] ) {
    self["block" + direction] = true;
    ul["slide" + direction]("slow", function() {
      self["block" + direction] = false;
    });
  }
};
}

$("li.menu").hover(toggle("Down", "none"), toggle("Up", "block"));
  $("li.menu ul").hide();
});

Что такое this в функции переключения выше? Как работает код? Что выбирает $("ul", this);?

1 Ответ

2 голосов
/ 17 декабря 2011

«this» относится к объекту jQuery $("li.menu") - когда вызов метода hover применяет к этому объекту функцию переключения.$("ul", this) выбирает элементы ul, которые являются потомками контекста, предоставленного во втором аргументе ("this"), таким образом он выбирает элементы ul, вложенные в элементы li.menuНадеемся, что это имеет смысл для функций наведения / переключения.

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