javascript - 单击事件切换所有类而不是正确的 block

标签 javascript jquery

我有一些折叠/可折叠 block ,其中第一个 block 打开,第二个/第三个 block 关闭。它们在打开和关闭方面按照我想要的方式工作,但我无法理解如何更改功能以使加号和减号图标更改为正确的 block 。目前,无论我打开或关闭哪个 block ,所有内容都会同时发生变化。

如何更改功能以便切换的 block 更新正确的图标?

function toggleDiv(divId) {
$("#"+divId).toggle();
$('.product-toggle span.icon').toggleClass('icon-plus icon-minus')
}

HTML

<p><a href="javascript:toggleDiv('features');" class="product-toggle"><span class="icon icon-plus" aria-hidden="true"></span><span class="toggle-title">Features</span></a></p>
<div id="features">
    Features 
</div>

<p><a href="javascript:toggleDiv('specifications');" class="product-toggle"><span class="icon icon-plus" aria-hidden="true"></span><span class="toggle-title">Specifications</span></a></p>
<div id="specifications">
    Spec 
</div>

<p><a href="javascript:toggleDiv('faq');" class="product-toggle"><span class="icon icon-plus" aria-hidden="true"></span><span class="toggle-title">FAQ</span></a></p>
<div id="faq">
    FAQ 
</div>

最佳答案

首先让我说不......只是不!

将目标添加到标记中作为数据属性:

<div class="product-toggle" data-target="features">
  <p>
    <span class="icon icon-plus" aria-hidden="true"></span>
    <span class="toggle-title">Features</span>
  </p>
</div>
<div id="features">
    Features 
</div>

将监听器附加到 product-toggle 类,如下所示:

$(document).on('click', '.product-toggle', function() {
  var target = this.dataset.target;
  $('#'+target).toggle();
  $(this).find('span.icon').toggleClass('icon-plus icon-minus');
});

JsFiddle

关于javascript - 单击事件切换所有类而不是正确的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31046336/

相关文章:

javascript - 如何获得 HTML 按钮以通过函数传递表单的字符串?

javascript - 添加换行符后防止 chrome 中的 textarea 滚动行为

javascript - grunt 服务器无法连接 <gruntjs>

javascript - 根据先前的复选框选择禁用/启用下一个复选框 - jQuery

jquery - Chrome 误读最大高度和最大宽度

jquery - 使用 jQuery 渲染部分集合

javascript - 在innerHTML上设置最小数值

javascript - 函数调用者无效元素

javascript - 如果在带有对话框的页面上找不到事件,则自动注销

javascript - Jquery按数组中的元素值排序