js问题,进来看看吧,还有别的方法么。我的方法有点笨

js 是这样图片描述

这个类名是让箭头旋转的图片描述
html这样图片描述
点击一次的样式图片描述
再点一次图片描述

因为给它已经加了“fa-flip-vertical”这个类名,所以是向上的,,,js写的太笨,,,求大神指导

对应的四个盒子图片描述

两个都出现了图片描述

阅读 2.5k
3 个回答
$(".invest-p1").click(function(){
    $(this).children("i").toggleClass("fa-flip-vertical")
});

功能完整点的:

var $content = $("div.invest-s");
$(".invest-nav").delegate(">", "click", function () {
    $(this).parent().find("i.fa-flip-vertical").removeClass("fa-flip-vertical");
    $(this).children("i").toggleClass("fa-flip-vertical");
    $content.hide().eq($(this).index()).show();
});

css的话用:active,
jq的话用toggleClass

其实这种需求,可以借鉴 bootstrapdropdown 组件的思路。

点击 dropdown button 来控制 dropdown-menu 的显示和隐藏,他的做法是在父节点添加或删除 open, 而不是直接控制 dropdown-menu 的显示和隐藏。

同理,推荐你在 invest-p1 节点添加或删除 active 来控制状态,这样做的好处:

  1. 可以控制所有子节点在 active 状态的样式,而不仅限于某一个子节点

  2. 用js控制会更简单

  3. 写样式也会更加清晰、方便维护

一个简单的js例子:

$('.invert-nav').on('click', '.invest-p1', function(e) {
    var $t = $(this);
    
    $t.toggleClass('active').siblings('.active').removeClass('active');
})

以scss为例:

.invert-p1{
    .fa{
        color: #bbb;
    }
    &.active{
        .fa{
            color: #006741;
        }
        // 这里还可以有其他子节点的样式
    }
}

这只是一种解决问题的思路,具体项目可以有多方面的衡量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题