带有 CSS 媒体查询的 jQuery 选项卡

标签 jquery css media-queries

我正在尝试使用 jQuery 为页面上的某个区域创建选项卡。选项卡设置为无序列表。当前选定的选项卡被赋予类“home-tab-active”,而其他选项卡被赋予类“home-tab”。我想要它做的是,当用户单击当前未选中的选项卡时,摆脱它的当前类并将其替换为“home-tab-active”类

但是,它似乎只应用了“home-tab”类的一部分,而“home-tab-active”类似乎没有被删除。我不确定这是否与我的 jQuery 代码有关(这是我第一次使用 jQuery 大约一年),或者是否是因为媒体查询(是否有特殊考虑删除和添加类当涉及媒体查询时通过 jQuery?)

HTML:

<div id="home-search-tabs" class="cf">
    <ul class="cf">
        <li class="home-tab-active"><a href="search-residential.php">Residential</a></li>
        <li class="home-tab"><a href="search-commercial.php">Commercial</a></li>
        <li class="home-tab"><a href="search-land.php">Land</a></li>
        <li class="home-tab"><a href="search-rentals.php">Rentals</a></li>
    </ul>
</div>

CSS:

#home-search-tabs {
    width: 100%;
    background-color: #333;
    border-bottom: 1px solid #777;
    padding: 5px 0px 0px 4px;
    font-size: 16px;
    font-family: "Source Sans Pro", arial, sans-serif;
}

.home-tab {
    position: relative;
    top: 4px;
    list-style-type: none;
    display: block;
    float: left;
    padding: 0px;
    margin: 0px 0px 0px 4px;
    background-color: #3B3B3B;
    border: 1px solid #777;
}

.home-tab-active {
    position: relative;
    list-style-type: none;
    display: block;
    float: left;
    padding: 0px;
    margin: 0px 0px 0px 4px;
    background-color: #2c2c2c;
    border: 1px solid #777;
    border-bottom: 1px solid #2c2c2c;
}

.home-tab-active a, .home-tab-active a:active, .home-tab-active a:visited {
    display: block;
    color: #FFF;
    text-decoration: none;
    padding: 5px;
    margin: 0px;
}

.home-tab a, .home-tab a:active, .home-tab a:visited {
    position: relative;
    display: block;
    color: #FFF;
    text-decoration: none;
    padding: 3px;
    margin: 0px;
}

@media (min-width: 768px) {

    #home-search-tabs {
        padding-top: 0px;
        padding-left: 10px;
    }

    .home-tab {
        margin-left: 6px;
    }

    .home-tab a, .home-tab a:active, .home-tab a:visited {
        padding: 3px 6px;
    }

    .home-tab-active a, .home-tab-active a:active, .home-tab-active a:visited {
        padding: 5px 6px;
    }

}

Javascript/jQuery:

<script>
  $(document).ready(function() {
    $("#home-search-tabs .home-tab a").click(function(){
      $(".home-tab-active").removeClass('home-tab-acive').addClass('home-tab');
      $(this).parent('li').removeClass('home-tab').addClass('home-tab-active');
      var tabSelected = $(this).text();
      alert (tabSelected);
      return false;
    });
</script>

最佳答案

你的 JS 中有错别字,你删除了类 home-tab-active 而不是 home-tab-active

对您的代码进行一点改进:为所有选项卡链接提供类 home-tabhome-tab-active 附加到事件的链接。在这种情况下,事件处理程序用于所有选项卡链接。在您的示例中,当您单击最初标记为事件的链接时,您实际上加载了一个新页面。

HTML:

<div id="home-search-tabs" class="cf">
    <ul class="cf">
        <li class="home-tab home-tab-active"><a href="search-residential.php">Residential</a></li>
        <li class="home-tab"><a href="search-commercial.php">Commercial</a></li>
        <li class="home-tab"><a href="search-land.php">Land</a></li>
        <li class="home-tab"><a href="search-rentals.php">Rentals</a></li>
    </ul>
</div>

JS:

<script>
  $(document).ready(function() {
    $("#home-search-tabs .home-tab a").click(function(e){
      $(".home-tab-active").removeClass('home-tab-active');
      $(this).parent('li').addClass('home-tab-active');
      e.preventDefault();
    });
  });
</script>

关于带有 CSS 媒体查询的 jQuery 选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706208/

相关文章:

javascript - 将 onKeyUp 替换为 onBlur jquery

html - 如何摆脱 jQuery Mobile Listview 缩略图下的空白

css - 最大化浏览器和切换选项卡时,媒体查询不会更改 CSS

html - 需要基于 flexbox 的列,左侧是文本,右侧是图像

html - 不需要 Javascript 的弹出菜单

javascript - 使用 JavaScript 将 CSS 样式和媒体查询添加到动态生成的 HTML 表中

css - 媒体查询在 iPad Pro 上无法正常工作

javascript - scrollTop 在 iframe 内不能很好地工作

javascript - 拉伸(stretch) Div 宽度以获取 Bootstrap 容器宽度

javascript - 如何在 ajax 刷新调用期间显示刷新指示器?