jquery - 带有 maxcdn css 的选项卡面板不起作用

标签 jquery html css

这是基本的 JQuery,用于在单击菜单中的列表项时显示和隐藏面板,但我无法让我的代码工作。我使用的 CSS 是 max cdn,所以我不确定是否需要我自己的 CSS 文件。

    <!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <!-- jQuery library -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
        <!-- Latest compiled JavaScript -->
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/sandstone/bootstrap.min.css"></script>
        <script src ="PhpProject1/jquery.js"></script>
        <script>
            $(document).ready(function() {
            $('.tabs a').click(function(){
                var $this =$(this);
                $('.panel').hide();
                $('.tabs a.active').removeClass('active');
                $this.addClass('active').blur();});
            }); // end ready
        </script>
    </head>
    <body>
        <div id="tabContainer">
            <h2>Tab Heading</h2>
            <div class=col-xs-3">
                <ul class="nav nav-tabs" role="tablist">
                <li  class="active"><a href="#">Home</a></li>
                <li><a href="#">Menu1</a></li>
                <li><a href="#">Menu2</a></li>
                <li><a href="#">Menu3</a></li>
              </ul>
                <div id ="panel1" class="panel panel-primary">
                    <div class="panel-heading">   
                     #panel1
                    </div>
                    <div class="panel-body">content
                    </div>    
                </div>
                <div id ="panel2" class="panel panel-primary">
                    <div class="panel-heading">   
                     #panel2
                    </div>
                    <div class="panel-body">content
                    </div>    
                </div>
                <div id ="panel3" class="panel panel-primary">
                    <div class="panel-heading">   
                     #panel3
                    </div>
                    <div class="panel-body">content
                    </div>    
                </div>
            </div>
    </body>
</html>

最佳答案

最大的问题是您有一个指向 CSS 的脚本标签。

这个:

<script src="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/sandstone/bootstrap.min.css"></script>

应该是这样的:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/sandstone/bootstrap.css">

即使解决了这个问题,还有其他问题。例如。 $('.tabs a').click(... 不执行任何操作,因为页面上没有类为“tabs”的元素。将其更改为 $( '.nav-tabs a').click(... 是一个好的开始,但我仍然认为您还有更多工作要做。

编辑

这是解决问题的一种方法。新脚本:

$(document).ready(function () {
    $('.nav-tabs li').click(function (e) {
        e.preventDefault();
        var $this = $(this);
        $('.panel').hide();
        $('#' + $this.find('a').attr('href')).show();
        $('.nav-tabs .active').removeClass('active');
        $this.addClass('active').blur();
        return false;
    });
}); // end ready

新标签:

<ul class="nav nav-tabs" role="tablist">
    <li class="active"><a href="home">Home</a></li>
    <li><a href="panel1">Menu1</a></li>
    <li><a href="panel2">Menu2</a></li>
    <li><a href="panel3">Menu3</a></li>
</ul>

新面板:

<div id="home" class="panel panel-primary">
    <div class="panel-heading">
        #home
    </div>
    <div class="panel-body">
        Home content
    </div>
</div>
<div id ="panel1" class="panel panel-primary" style="display: none">
    <div class="panel-heading">   
        #panel1
    </div>
    <div class="panel-body">content
    </div>    
</div>
<div id ="panel2" class="panel panel-primary" style="display: none">
    <div class="panel-heading">   
        #panel2
    </div>
    <div class="panel-body">content
    </div>    
</div>
<div id ="panel3" class="panel panel-primary" style="display: none">
    <div class="panel-heading">   
        #panel3
    </div>
    <div class="panel-body">content
    </div>    
</div>

有几点需要注意:

  1. 我在 li 而不是 a 上设置了点击处理程序,因为这是“事件”类所在的位置。
  2. 我使用 anchor 标记上的 href 属性来决定显示哪个面板。
  3. 我制作了一个新的“主页”面板,并将所有其他面板设置为初始样式 display:none

关于jquery - 带有 maxcdn css 的选项卡面板不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37901423/

相关文章:

javascript - JQuery 添加/删除类无法正常工作

Javascript/Jquery 问题 - playStateChange,Mediaplayer 对象 IE9 ... 试图让 Jquery bind() 处理此事件 ...继续阅读

jquery - 如何将此 JQuery CSS 修改为我的 View ?

javascript - 无法让页面在点击时滚动到顶部

html - 达到最小宽度时如何将div向左浮动?

php - Ajax 使用方法 load() 获取选择字段中的选项值

javascript - 编写一长串 if-else-if 的简短方法?

html - float 元素内的 float 元素

javascript - 为什么我不能为 Material-UI 中禁用的元素自定义类?

css - Flex box child 的高度是 parent 的 100%