带有 + 和 - 的 jQuery Accordion 式常见问题解答

标签 jquery html css accordion

我正在尝试在问题前使用 + 和 - 符号制作常见问题 Accordion like this.它几乎可以工作,除非我再次单击打开的部分,减号保持为减号。有什么办法让它加分吗?我尝试为此编写第一条注释行,但它似乎不起作用。当心,我不知道我在用 jQuery 做什么,只是根据我在其他语言中看到和知道的东西来即兴创作。

$('#accordion').find('.accordion-toggle').click(function(){

  //Check if this panel is minus and change it to plus *** THIS DOESN'T WORK ***
  if($('img', this).attr('src') == 'minus.png'){
     $('img', this).attr('src', 'plus.png');
  }

  //Expand or collapse this panel
  $(this).next().slideToggle('fast');

  //Change this panel to minu
  $('img', this).attr('src','minus.png');

  //Hide the other panels
  $(".accordion-content").not($(this).next()).slideUp('fast');

  //Change other panels to plus
  $(".accordion-toggle img").not($('img', this)).attr('src', 'plus.png');

});

<!-- CSS -->
<style>
  .accordion-toggle {margin-top: 10px; cursor: pointer; background-color: #F0F0F0; padding: 16px 24px 19px 0px;}
  .accordion-toggle h4 { line-height: 26px; font-weight: 600;}
  .accordion-content {display: none;  background-color: #F0F0F0; padding: 1px 425px 34px 56px; line-height: 25px; }
  .accordion-content.default {display: block;}
  #accordion {
     font-family: "Open Sans"; color: #0D253E; font-size: 16px;
  }
  .plus {
     margin: 3px 16px 3px 20px; float: left;
  }
</style>

<!-- HTML -->
<div id="accordion">
  <div class="accordion-toggle"><h4><img class="plus" src="plus.png" height="20px"/>Question?</h4></div>
  <div class="accordion-content">
    <p>Content text</p>
  </div>
  <div class="accordion-toggle"><img class="plus" src="plus.png" height="20px"/><h4>Question?</h4></div>
  <div class="accordion-content">
    <p>Content text</p>
  </div>
  <div class="accordion-toggle"><h4><img class="plus" src="plus.png" height="20px"/>Question?</h4></div>
  <div class="accordion-content">
    <p>Content text</p>
  </div>
  <div class="accordion-toggle"><h4><img class="plus" src="plus.png" height="20px"/>Question?</h4></div>
  <div class="accordion-content">
    <p>Content text</p>
  </div>
</div>

最佳答案

您可能需要更改在每个 div.accordion-toggle DOM 元素中调用 img 属性的方式

$('#accordion').find('.accordion-toggle').click(function() {

    // Check if this panel is minus and change it to plus *** THIS DOESN'T WORK ***

    // @eeya: Change it like this: (Find every img elements
    // under the .accordion-toggle element that called
    // the event listener
    if ($(this).find('img').attr('src') === 'minus.png') {
        $(this).find('img').attr('src', 'plus.png');
    }

    //Expand or collapse this panel
    $(this).next().slideToggle('fast');

    //Change this panel to minu
    $('img', this).attr('src','minus.png');

    //Hide the other panels
    $(".accordion-content").not($(this).next()).slideUp('fast');

    //Change other panels to plus
    $(".accordion-toggle img").not($('img', this)).attr('src', 'plus.png');

});

希望这对您的情况有所帮助。

关于带有 + 和 - 的 jQuery Accordion 式常见问题解答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45915853/

相关文章:

javascript - 单击模式“同意”按钮时未选中复选框

html - 跨度跳转到新行,即使它有内联 block ?

javascript - 图片旋转分页问题

html - 粗体字重移动文本对齐

javascript - ie8/9 中的 jquery ajax 调用不起作用

javascript - 当元素出现在视口(viewport)中时运行函数

jquery - 在 Lift/Scala 中更改某些 CalendarItem 元素的背景

javascript - 自定义 D3 LineChart 中的刻度线

javascript - 我可以使用 Angularjs 指令将日期选择器添加到 HTML 元素吗?

javascript - 使用 Ajax 更新除一个 div 之外的页面内容