0

我需要帮助让 jQuery 检查鼠标是否在元素上。

我需要它像导航一样工作:http: //mashable.com

我有这个:

<div id="main_nav">
  <ul>
<li href="#tab1">Nav Tab 1</li>
<li href="#tab2">Nav Tab 2</li>
  </ul>
</div>
<div id="main_nav_expansion">
  <ul class="navtab" id="tab1">
    <li>Submenu Title Here
   <ul>
     <li>Sublink Option</li>
     <li>Sublink Option</li>
   </ul>
</li>
  </ul><!-- end navtab 1 -->
  <ul class="navtab" id="tab2">
    <li>Submenu Title Here
   <ul>
     <li>Sublink Option</li>
     <li>Sublink Option</li>
   </ul>
</li>
  </ul><!-- end navtab 2 -->
 </div>

我编写了这个 jQuery,但是当您将鼠标移出“Nav Tab 1”或“Nav Tab 2”时,我无法让 ul.navtab 保持打开状态。我试图在回调函数中编写条件语句来检查鼠标是否在元素上,但它不起作用。

这是 jQuery 代码:

jQuery(document).ready(function(){

   $('ul.navtab').hide();

   $('#main_nav ul li').hover(function(){
   $('#main_nav ul li.active').removeClass('active');
   $(this).addClass("active");
   var activeNavTab = $(this).attr("href");
   $(activeNavTab).addClass("active").slideDown();
   },function(){
   if($("ul.navtab").is(":hover")){
   $("ul.navtab").show();
   }else{
      $("ul.navtab").slideUp();
      $('#main_nav ul li.active').removeClass('active');
   }
});
4

1 回答 1

0

你可以试试这个:

jQuery(document).ready(function () {

$('ul.navtab').hide();

   $('#main_nav ul li').hover(function () {
      $('#main_nav ul li.active').removeClass('active');
      $(this).addClass("active");
      var activeNavTab = $(this).attr("href");
      $(activeNavTab).siblings().removeClass("active").hide();
      $(activeNavTab).addClass("active").slideDown();
  });
  $('.navtab').on({
    mouseleave: function(){
    $('.active').removeClass('active');
    $('this').fadeOut();
    }
  });
});

我认为不需要回调。

结帐最后的小提琴。

于 2013-03-02T02:54:14.517 回答