jQuery toggleClass不改变css

时间:2015-04-21 20:45:05

标签: jquery css

我正在使用jQuery制作下拉菜单。在每个对象旁边打开一个下拉列表,有一个三角形,如下所示:

enter image description here
 我有两个CSS类,.caret.u-caret。类caret看起来像一个指向下方的三角形,而类u-caret看起来就像一个指向上方。我希望在单击对象时切换类。

HTML:

<span id="learn">Open Dropdown <span class="caret"></span></span>

CSS:

.caret {
       border-top:5px solid black;
       border-left:5px solid transparent;
       border-right:5px solid transparent;
}
.u-caret{
       border-bottom:5px solid black;
       border-left:5px solid transparent;
       border-right:5px solid transparent;
}

JS:

 $('#learn').click(function(){
       $('#learn-dropdown').toggle().css('z-index','200');
       $('#affiliate-content-dropdown').css('z-index','100').slideUp();
       $("#snippet-dropdown").css('z-index','100').slideUp();
       $('#stories-dropdown').css('z-index','100').slideUp();
       $(this).closest('.caret').toggleClass('caret').toggleClass('u-caret');
    });

2 个答案:

答案 0 :(得分:2)

.closest在层次结构中向上查找您想要的内容:

$('#learn').click(function(){
    $(this).find('.caret').toggleClass('caret').toggleClass('u-caret');
});

这也是第一次失败后因为切换将删除班级.caret。你想要的是一个不变的课程:

<span id="learn">Open Dropdown <span class="arrow caret"></span></span>

然后你找到.arrow元素:

$('#learn').click(function(){
    $(this).find('.arrow').toggleClass('caret').toggleClass('u-caret');
});

答案 1 :(得分:2)

如我的评论中所述,您无法搜索.caret。切换后,find('.caret')不再有效。搜索任一课程,切换所有找到的内容:

&#13;
&#13;
$('#learn').click(function() {
  $('#learn-dropdown').toggle().css('z-index', '200');
  $('#affiliate-content-dropdown').css('z-index', '100').slideUp();
  $("#snippet-dropdown").css('z-index', '100').slideUp();
  $('#stories-dropdown').css('z-index', '100').slideUp();
  $(this).find('.caret, .u-caret').toggleClass('caret').toggleClass('u-caret');
});
&#13;
.caret {
  border-top: 5px solid black;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
}
.u-caret {
  border-bottom: 5px solid black;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<span id="learn">Open Dropdown <span class="caret"></span></span>
&#13;
&#13;
&#13;