【问题标题】:Tabs - using hover (mouseeneter and leave) and click选项卡 - 使用悬停(鼠标进入和离开)并单击
【发布时间】:2013-01-24 14:16:08
【问题描述】:

我在使用标签时遇到了问题。我试图实现标签功能,例如站点http://mashable.com

选项卡可以悬停并通过悬停显示选项卡内容。如果我单击选项卡,选项卡内容应该被隐藏,不可见直到 mouseleave <li>。如果 我再次鼠标输入,标签内容将显示出来。

我遇到了组合悬停和点击的问题。使用此代码,我遇到以下问题:
1. 页面加载
- 如果在页面加载期间上下选项卡,尽管单击选项卡,但由于 mouseenter 会显示选项卡内容
2. 点击标签<li>
- 单击选项卡有时会显示选项卡内容,有时不显示 - 没有规则;不得显示
- 如果标签内容不显示,如果我移动鼠标(我没有鼠标离开<li>),有时会显示标签内容,有时不显示

HTML:

<div id="tabs">
    <ul id="tabstest">
        <li id="tab1" class="tab" onclick="location.href='\ttest1.php';"  style="cursor:pointer;"><strong>Test 1</strong></li>
        <li id="tab2" class="tab"> <a href="/Test/test2.php" class="tab_link" ><strong><br>Test 2</strong></a></li>
        <li id="tab3" class="tab"> <a href="/Test/test3.php" class="tab_link" ><strong>Test 3</strong></a></li>
        <li id="tab4" class="tab" onclick="location.href='\ttest4.php'; " style="cursor:pointer;" ><strong><br>Test 4</strong></li>
        <li id="tab5" class="tab"> <a href="/Test/test5.php" class="tab_link" ><strong><br>Test 5</strong></a></li>
        <li id="tab6" class="tab"> <a href="/Test/test6.php" class="tab_link" ><strong><br>Test 6</strong></a></li>
    </ul>
</div>
<div id="tabcontents">
    <div id="tab1content" class="tabcontent">
        <p>tab1 content</p>
    </div>  
    <div id="tab2content" class="tabcontent">
        <p>tab2 content</p>
    </div>   
    <div id="tab3content" class="tabcontent">
        <p>tab3 content</p>
    </div>
    <div id="tab4content" class="tabcontent">
        <p>tab4 content</p>
    </div>    
    <div id="tab5content" class="tabcontent">
        <p>tab5 content</p>
    </div>
    <div id="tab6content" class="tabcontent">
        <p>tab6 content</p>
    </div>
</div>

JQuery:

$(window).load(function(){
    $(".tab").focus(function() {
       var tabId = $(this).attr('id');
        $("#" + tabId + "content").hide();
   });  
    $(".tabcontent").focus(function() {
        $(this).hide();
    });
    $(".tab").click(function() {
       var tabId = $(this).attr('id');
        $("#" + tabId + "content").hide();
   });  
    $(".tabcontent").click(function() {
        $(this).hide();
    }); 
    $(".tab").mouseenter(function() {
        var tabId = $(this).attr('id');
        $("#" + tabId + "content").show();
   });
    $(".tabcontent").mouseenter(function() {
        $(this).show();
    });
    $(".tab").mouseleave(function() {
        var tabId = $(this).attr('id');
        $("#" + tabId + "content").hide();
    });
    $(".tabcontent").mouseleave(function() {
        $(this).hide();
    });
}); 

【问题讨论】:

    标签: jquery tabs click mouseenter mouseleave


    【解决方案1】:

    你好,而不是使用制表符,创建一个 ul li 并在 li 中放置内容会更容易,然后使用 hover() 因为 div 不会隐藏为 li 的子级

    <div id="tabs">
    <ul id="tabstest">
        <li id="tab1" class="tab" onclick="location.href='\ttest1.php';"  style="cursor:pointer;">
            <strong>Test 1</strong>
            <div id="tab1content" class="tabcontent">
                <p>tab1 content</p>
            </div>  
        </li>
        <li id="tab2" class="tab" <a href="/Test/test2.php" class="tab_link" >
            <strong><br>Test 2</strong></a>
            <div id="tab2content" class="tabcontent">
                <p>tab2 content</p>
            </div>   
        </li>
        <li id="tab3" class="tab" <a href="/Test/test3.php" class="tab_link" >
            <strong>Test 3</strong></a>
            <div id="tab3content" class="tabcontent">
                <p>tab3 content</p>
            </div>
        </li>
        <li id="tab4" class="tab" onclick="location.href='\ttest4.php'; " style="cursor:pointer;" >
            <strong><br>Test 4</strong>
             <div id="tab4content" class="tabcontent">
                <p>tab4 content</p>
            </div>    
        </li>
        <li id="tab5" class="tab" <a href="/Test/test5.php" class="tab_link" >
            <strong><br>Test 5</strong></a>
        </li>
        <li id="tab6" class="tab" <a href="/Test/test6.php" class="tab_link" >
            <strong><br>Test 6</strong></a>
        </li>
    </ul>
    </div>
    
    jquery:
    
    $(function(){
        $("#tabstest li").hover(function(){
            $(this).children("div").show();
        },function(){
            $(this).children("div").hide();
        });
    });
    

    【讨论】:

    • JQuery 中的点击事件函数呢?现在,如果我单击选项卡,则显示选项卡内容......我们如何解决这种情况:---如果我单击选项卡,选项卡内容应该被隐藏,不可见直到 mouseleave
    • 。如果我再次鼠标输入,将显示选项卡内容。---
  • 刚刚注意到而不是`
  • 测试1

    tab1内容​​

  • `你应该把`
  • Test 1

    tab1 内容,所以你可以在这里放一些链接 aswerll

  • `
    【解决方案2】:

    首先在页面加载时添加$(".tabcontent").hide(),这样默认隐藏所有内容。除此之外,我没有发现任何“有时有效,有时无效”的错误。您的代码有效,但它不像可混搭的那样,因为在我离开或单击选项卡后内容被隐藏。

    我个人尽量避免使用列表,因为我发现 div 的基本结构更容易通过 javascript 控制。有几种方法可以创建您想要的内容,开发人员可以选择最适合他的内容。

    正如 Lesonaschi 所说,可能最好的选择是嵌套元素(标签内的内容 divli),因为这样悬停功能应该应用于整个块。但是不要相信我的话,尝试和实验:)

    【讨论】:

      【解决方案3】:

      我没有发css,可能css会造成元素div、ul、li、...的问题

      #tabs {
      
              width: 950px;
      
          }
      
          #tabs ul li a {
          display: block;
          }
      
          #tabs ul {
              padding: 0;
              margin: 0;
              list-style: none;
              display: block;
          }
          #tabs ul li {
              display: block;
              float: left;
              padding: 2.8px;
              margin: 0px;
              font-size: 15.5px;
              border-right:3px double #cccccc;
              background: #000000 url(/images/tab2.jpg) no-repeat 0px 0px;
              color:#ffffff; 
              text-align: center;
          }
      
          #tabs ul li:last-child { border-right: none;  }
          #tabs li:first-child + li + li + li + li  + li{border-right:none;}
          #tabcontents {
              clear: both;
      
          }
      
          .tabcontent {
              display: none;
              width: 947px;
              height:295px;
              background: #202020;
              position: absolute;
              color:#f0f0f0;
              z-index:9999;
          }
      
      
          a.tab_link{
              text-decoration:none;
      
          }
      
          a.tab_link:link { 
              color: #ffffff; 
          }
      
          a.tab_link:visited { 
              color: #f6911b; 
          }
      
          a.tab_link:hover {
              color: #eeeeee;
          }
      
          a.tab_link:active {
              color: #f6911b;
          }
      

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签