2015-05-05 19 views
4

我试图创建简单的jQuery选项卡。标签内容应显示在悬停上。所以我正在尝试下面的代码。问题是,如果您将鼠标悬停在标签标题上的速度足够快,则在显示正确的标签内容之前,仍然可以看到其他标签内容。jQuery悬停标签

演示:

请参阅小提琴链接,看问题: http://jsfiddle.net/0v9nhxu3/

代码:

jQuery(document).ready(function($) { 
    $(".tab-titles li").hover(function() { 
     $(".tab-content").hide(); 
     $(".tab-titles li").removeClass('active');     
     $(this).addClass("active");     
     var selected_tab = $(this).find("a").attr("href"); 
     $(selected_tab).fadeIn(); 
     return false; 
    }); 
}); 
+0

为什么downvote?请赐教我这个问题有什么不对? – user1355300

+0

我同意这个问题很好+1 – Jack

回答

3

使用stop()fadeIn之前停止当前正在运行的动画。

jQuery(document).ready(function($) { 
    $(".tab-titles li").hover(function() { 
     $(".tab-content").hide(); 
     $(".tab-titles li").removeClass('active');     
     $(this).addClass("active");     
     var selected_tab = $(this).find("a").attr("href"); 
     $(selected_tab).stop().fadeIn(); 
     return false; 
    }); 
}); 

Fiddle Demo

+1

作为一个方面说明,使用'hover()'方法in/out处理程序似乎不合适 –

+0

@ A.Wolff什么是更好的解决方案?谢谢。 – user1355300

+1

@ user1355300只需将'hover'替换为'mouseover'例如:http://jsfiddle.net/0v9nhxu3/10/ –

1
jQuery(document).ready(function($) { 
     $(".tab-titles li").hover(function() { 
      $(".tab-content").removeClass('tab-show'); 
      $(".tab-titles li").removeClass('active');     
      $(this).addClass("active");     
      var selected_tab = $(this).find("a").attr("href"); 
      $(selected_tab).addClass("tab-show"); 
      return false; 
     }); 
    }); 

http://jsfiddle.net/0v9nhxu3/9/

1

快捷方式自定义

$(function(){ 
 
    $('.tabs li').hover(function(){ 
 
    //hover in 
 
     var index= $(this).index(); 
 
     $('.tabcontainer div').eq(index).show(500); 
 
    },function(){ 
 
    //hover out 
 
     $('.tabcontainer div').hide(500); 
 
    }); 
 
})
.tabcontainer{ 
 
    padding: 20px; 
 
} 
 
.tabcontainer div{ 
 
    display: none; 
 
    padding: 10px; 
 
    border: thin solid #ccc; 
 
} 
 
.tabs{ 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.tabs li{ 
 
    list-style: none; 
 
    padding: 10px; 
 
    display: inline-block; 
 
    cursor: pointer; 
 
} 
 
.tabs li:hover{ 
 
    background-color: #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="tabcontainer"> 
 
    <ul class="tabs"> 
 
     <li>Tab 1</li> 
 
     <li>Tab 2</li> 
 
     <li>Tab 3</li> 
 
     <li>Tab 4</li>  
 
    </ul> 
 
    <div>Tab 1 content</div> 
 
    <div>Tab 2 content</div> 
 
    <div>Tab 3 content</div> 
 
    <div>Tab 4 content</div> 
 
</div>

+0

@ user1355300检查[链接] http://jsfiddle.net/0v9nhxu3/11/ – ashishraaj