jQuery .toggle() 使按钮消失

标签 jquery html css frontend

我有一个过滤器导航栏,当单击每个按钮时,它只显示具有相应类别的那些元素。单击所有按钮时,它会显示所有这些。此外,当单击按钮时,它会添加选定的类,这会更改背景颜色。

目标:当按钮被第二次点击时(如果它已经被选中),再次显示所有内容并取消选择按钮。

问题:我相信使用 .toggle(fn1{}, fn2{}) 方法是正确的方法,fn1 会在按钮上显示选定的类并且只显示相应的元素,然后 fn2 会将所有内容返回到原始显示。但是,当使用 .toggle() 方法时,它会使整个按钮消失(当前应用于“网页设计”按钮)。

所以这是 JSFiddle .

最佳答案

你可以做类似的事情

var $all = $("#projects").find("li.wrap");

$('#all-btn').click(function () {
    $("#nav-filter li").removeClass("selected");
    $(this).addClass("selected");
    $all.fadeIn(1000);
});

//toggle is making button dissappear
$('#nav-filter li[data-type]').click(function () {
    var $this = $(this),
        $clis = $all.filter('.' + this.dataset.type)
    $this.toggleClass("selected");
    $('#nav-filter li').not(this).removeClass('selected');
    if ($this.hasClass('selected')) {
        $all.not($clis).fadeOut(1000);
        $clis.fadeIn(1000);
    } else {
        $all.fadeIn(1000);
    }
});

演示:Fiddle

关于jQuery .toggle() 使按钮消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710745/

相关文章:

javascript - 从 onChange 处理程序调用时使用错误的字段名称提交 HTML 表单

c# - ASP.NET MVC : How to pass Dictionary<string, string> 从 Controller 到 jquery 的使用?

javascript - Twitter Bootstrap 下拉菜单不显示

javascript - 如何为特定浏览器导入脚本 Ember-CLi Broccoli

javascript - Bootstrap : Dropdown child element without dropdowning parent element on navbar

javascript - 粘性菜单栏,从底部开始,然后停留在顶部

html - flex 订单未按预期工作

javascript - HTML5 Canvas 在外部 JavaScript 文件中不起作用

html - 提供仅用于测试目的的 html 元素 id 属性是一种好习惯吗?

html - nggrid 表格高度修复为 18 像素错误