javascript - 如何在父点击时为子元素切换多个类

标签 javascript jquery css toggle slidetoggle

我正在尝试使用 jQuery 切换类,但我正在努力这样做。我的 HTML 结构和 jQuery 如下所示

<div class="mainFacet bmargin5">
   <div class="head line">
      <div class="facet-title" title="Click to collapse">
         <h2 class="unit-line">Processor</h2>
         <span class="icon minus"></span>
      </div>
   </div>
   <ul style="display:inline-block">
        <li>i3</li>
        <li>i5</li>
        <li>i7</li>
   </ul>
</div>

jQuery

$('.facet-title').click(function () {
            $(this).parent().parent().children("ul").slideToggle();
            $(this).attr("title", ($(this).attr("title") == "Click to Collapse") ? "Click to Expand" : "Click to Collapse");
            $(this).toggle(function () {
                $(this).children("span").removeClass("minus").addClass("plus");
            }, function () {
                $(this).children("span").removeClass("plus").addClass("minus"); 
            });
        });

所以很简单。我希望点击 facet-title 时发生三件事。

  • 'ul' 应该从“display:inline-block”切换到“display:none”
  • “标题”应从“点击折叠”切换为“点击展开”
  • 跨度的类应该从“图标减号”切换到 “图标加号”。 现在,前两个事件发生得很好。它只是第三个没有的事件。我做错了什么?

这是一个demo显示我在前 2 个任务中的进度...

最佳答案

您可以使用:

$(this).closest('.mainFacet').find('span').toggleClass("minus plus");

Working Demo

关于javascript - 如何在父点击时为子元素切换多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28275737/

相关文章:

jquery - 在没有 flexbox 或 text-align justify 的情况下在两端水平对齐内容/导航

javascript - 如何使用 JavaScript 访问字典中的本地对象?

javascript - 检查字符串是否属于对象中键的数组类型值

javascript - 将数组元素替换为 id 标签

javascript - 删除 Div 不起作用

javascript - 如何使用 Javascript 在下拉列表中选择第 n 个选项

javascript - 如何将div复制/克隆到其他容器中的相应结构

html - 如何使用 CSS 将菱形的 Angular 圆化?

javascript - 滚动到带有偏移量的 div ID

c# - 在 JS 方法中获取变量的内容 asp.net C#