简体   繁体   English

jQuery:使用加号和减号图标切换问答类

[英]JQuery: toggle Q&A class with plus and minus icons

I am trying to toggle plus and minus span and also toggle the answer div all at once and its not working out. 我试图切换正负跨度,也一次切换所有答案div,但无法解决。 I built the html so the question div has two childrens: 我建立了html,所以问题div有两个孩子:

  1. div icons with two children of plus and minus icons 有两个孩子的加号和减号图标的div图标
  2. div for the answer div的答案

this is the code: 这是代码:

 $( document ).ready(function() { $(".question").click(function(){ $(this).children(".icons div").toggle(); $(this).next('.answer').slideToggle(); }); }); 
 .question div{ display: table-cell; font-size: 17px; font-weight: bold; color:blue; cursor: pointer; } .question .icons .MinusIcon{ display: none; } .answer{ display:none; padding-left: 5%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!---------------1---------------> <div class="question"> <div class="icons"> <div class="plusIcon">[<span>+</span>]</div> <div class="MinusIcon">[<span>-</span>]</div> </div> <div> Question<br>Question </div> </div> <div class="answer"> ANSWER<br> ANSWER<br> ANSWER<br> ANSWER </div> <!---------------2---------------> <div class="question"> <div class="icons"> <div class="plusIcon">[<span>+</span>]</div> <div class="MinusIcon">[<span>-</span>]</div> </div> <div> Question<br>Question </div> </div> <div class="answer"> ANSWER<br> ANSWER<br> ANSWER<br> ANSWER </div> 

Try this : 尝试这个 :

  $( document ).ready(function() {
            $(".question").click(function(){            

                $(this).find(".plusIcon").toggle();
                $(this).find(".MinusIcon").toggle();    
                $(this).next('.answer').slideToggle();
            });

        });

Change Your Function 改变你的功能

$(this).find(".icons div.plusIcon").toggle();
$(this).find(".icons div.MinusIcon").toggle();

 $( document ).ready(function() { $(".question").click(function(){ $(this).find(".icons div.plusIcon").toggle(); $(this).find(".icons div.MinusIcon").toggle(); $(this).next('.answer').slideToggle(); }); }); 
 .question div{ display: table-cell; font-size: 17px; font-weight: bold; color:blue; cursor: pointer; } .question .icons .MinusIcon{ display: none; } .answer{ display:none; padding-left: 5%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!---------------1---------------> <div class="question"> <div class="icons"> <div class="plusIcon">[<span>+</span>]</div> <div class="MinusIcon">[<span>-</span>]</div> </div> <div> Question<br>Question </div> </div> <div class="answer"> ANSWER<br> ANSWER<br> ANSWER<br> ANSWER </div> <!---------------2---------------> <div class="question"> <div class="icons"> <div class="plusIcon">[<span>+</span>]</div> <div class="MinusIcon">[<span>-</span>]</div> </div> <div> Question<br>Question </div> </div> <div class="answer"> ANSWER<br> ANSWER<br> ANSWER<br> ANSWER </div> 

You could achieve toggling the +/- icons along with the answers div by doing the following in your code: 您可以通过在代码中执行以下操作来切换+/-图标和答案div:

  1. Use a single div with just the plusIcon 仅使用plusIcon使用单个div

    <div class="icons"> <div class="plusIcon"></div> </div>

  2. Toggle the minusIcon class on click using: 单击可切换minusIcon类,方法是:

    $(this).find(".icons div").toggleClass("minusIcon");

The + & - icons are provided by pseudo elements from CSS: +&-图标由CSS的伪元素提供:

.plusIcon:before {
  content: "[+]";
  width: 22px;
  height: 22px;
}
.minusIcon:before {
 content: "[-]";
 width: 22px;
 height: 22px;
}

You can find the complete solution here http://jsfiddle.net/d1cot84e/1/ 您可以在这里找到完整的解决方案http://jsfiddle.net/d1cot84e/1/

With little modifications in OP's code, here's how it looks: 只需对OP的代码进行少量修改,就可以看到它的外观:

  $(".question").on('click', function() { var $answer = $(this).next('.answer'); var visible = $answer.is(':visible'); $(this).children('.icons').text(visible ? '[+]' : '[-]'); $answer.slideToggle(); }); 
 .question div { display: table-cell; font-size: 17px; font-weight: bold; color: blue; cursor: pointer; } .answer { display: none; padding-left: 5%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="question"> <div class="icons">[+]</div> <div> Question </div> </div> <div class="answer"> ANSWER <br>ANSWER <br>ANSWER <br>ANSWER </div> <div class="question"> <div class="icons">[+]</div> <div> Question </div> </div> <div class="answer"> ANSWER <br>ANSWER <br>ANSWER <br>ANSWER </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM