使用jQuery的导航菜单(来自jQuery Cookbook)

时间:2011-12-17 12:39:38

标签: javascript jquery jquery-selectors

菜单应该在悬停时显示子项。这是代码(来自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 个答案:

答案 0 :(得分:2)

“this”指的是jQuery对象$("li.menu") - 当悬停方法调用将切换函数应用于该对象时。 $("ul", this)选择ul元素作为第二个参数(“this”)中提供的上下文的子元素,因此它选择嵌套在li.menu元素中的ul元素。希望这使得悬停/切换功能有意义。