2017-08-09 43 views
1

好吧,所以我必须禁用其他复选框,当一个是活动的,并设法保持我的手风琴面板的过渡动画,但我不知道如何切换面板一旦我点击“是”复选框。 当你点击“YES”复选框时,你仍然需要点击第一个手风琴面板才能打开它。我一直在寻找的是当我点击“是”复选框时,它应该切换面板。如何使用复选框和仅复选框切换手风琴菜单?

到目前为止,这是我事先得到了

<script> 
 
\t \t \t 
 
\t var acc = document.getElementsByClassName("accordion_1"); 
 
\t var i; 
 

 
\t for (i = 0; i < acc.length; i++) { 
 
\t acc[i].onclick = function() { 
 
\t \t this.classList.toggle("active"); 
 
\t \t var panel = this.nextElementSibling; 
 
\t \t if (panel.style.maxHeight){ 
 
\t \t panel.style.maxHeight = null; 
 
\t \t } else { 
 
\t \t panel.style.maxHeight = panel.scrollHeight + "px"; 
 
\t \t } 
 
\t } 
 
\t } 
 
\t 
 
\t $(document).ready(function() { 
 
\t \t $('#check_main').change(function() { 
 
\t \t \t $('#panel_main').toggle(); 
 

 
\t \t \t var acc = document.getElementsByClassName("accordion_main"); 
 
\t \t \t var i; 
 
\t 
 
\t \t \t for (i = 0; i < acc.length; i++) { 
 
\t \t \t \t acc[i].onclick = function() { 
 
\t \t \t \t \t this.classList.toggle("active"); 
 
\t \t \t \t \t var panel = this.nextElementSibling; 
 
\t \t \t \t \t if (panel.style.maxHeight){ 
 
\t \t \t \t \t \t panel.style.maxHeight = null; 
 
\t \t \t \t \t } else { 
 
\t \t \t \t \t \t panel.style.maxHeight = panel.scrollHeight + "px"; 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t }); 
 
\t $(".checkbx, .GrpChk").change(function() { 
 
\t \t this.checked ? $("." + this.className).not(this).prop("disabled", true):$("." + this.className).not(this).prop("disabled", false); 
 
\t }); 
 
</script>
button.accordion_1{ 
 
background-color: #eee; 
 
color: #444; 
 
cursor: pointer; 
 
padding: 18px; 
 
width: 100%; 
 
border: none; 
 
text-align: left; 
 
outline: none; 
 
font-size: 15px; 
 
transition: 0.4s; 
 
} 
 

 
button.accordion_1.active, button.accordion:hover { 
 
background-color: #ddd; 
 
} 
 

 
div.panel { 
 
padding: 0 18px; 
 
background-color: white; 
 
max-height: 0; 
 
overflow: hidden; 
 
transition: max-height 0.2s ease-out; 
 
} 
 

 
button.accordion_main{ 
 
background-color: #eee; 
 
color: #444; 
 
cursor: pointer; 
 
padding: 18px; 
 
width: 100%; 
 
border: none; 
 
text-align: left; 
 
outline: none; 
 
font-size: 15px; 
 
transition: 0.4s; 
 
} 
 

 
button.accordion_main.active, button.accordion:hover { 
 
background-color: #ddd; 
 
} 
 

 
div.panel_main{ 
 
padding: 0 18px; 
 
background-color: white; 
 
max-height: 0; 
 
overflow: hidden; 
 
transition: max-height 0.2s ease-out; 
 
}
<div class="box item1"> 
 
\t \t <button class="accordion_main" id="check_holder"> TOTALLY RANDOM TEXT FOR TESTING 
 
\t \t \t <div class="check_box"> \t 
 
\t \t \t \t <span> 
 
\t \t \t \t \t <form name="aForm" action=""> 
 
\t \t \t \t \t \t <p> 
 
\t \t \t \t \t \t <label> 
 
\t \t \t \t \t \t \t <!--<input type="checkbox" name="check" id="check" value="1"> YES--> 
 
\t \t \t \t \t \t \t <input class="checkbx" id="check_main" name="Role" type="checkbox" value="yes"/>YES 
 
\t \t \t \t \t \t </label> 
 
\t \t \t \t \t \t <label> 
 
\t \t \t \t \t \t \t <input class="checkbx" name="Role" type="checkbox" value="no"/> NO 
 
\t \t \t \t \t \t </label> 
 
\t \t \t \t \t \t </p> 
 
\t \t \t \t \t </form> 
 
\t \t \t \t </span> 
 
\t \t \t </div> 
 
\t \t </button> 
 
\t \t <div class="panel_main" id="panel_main" style="display:none;"> 
 
\t \t \t <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
\t \t </div> 
 
\t \t <button class="accordion_1">Section 2</button> 
 
\t \t <div class="panel"> 
 
\t \t \t <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
\t \t </div> 
 
\t \t <button class="accordion_1">Section 3</button> 
 
\t \t <div class="panel"> 
 
\t \t \t <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
\t \t </div> 
 
\t </div>
再次,感谢球员,我一直工作在这两天了,任何帮助十分赞赏!

回答

0

给与第2部分和第3部分的按钮相关的课程一个不同的名称。

var acc = document.getElementsByClassName("accordion"); 
 
var i; 
 

 
for (i = 0; i < acc.length; i++) { 
 
    acc[i].onclick = function() { 
 
    this.classList.toggle("active"); 
 
    var panel = this.nextElementSibling; 
 
    if (panel.style.maxHeight) { 
 
     panel.style.maxHeight = null; 
 
    } else { 
 
     panel.style.maxHeight = panel.scrollHeight + "px"; 
 
    } 
 
    } 
 
}
button.accordion, button.accordionn { 
 
    background-color: #eee; 
 
    color: #444; 
 
    cursor: pointer; 
 
    padding: 18px; 
 
    width: 100%; 
 
    border: none; 
 
    text-align: left; 
 
    outline: none; 
 
    font-size: 15px; 
 
    transition: 0.4s; 
 
} 
 

 
button.accordion.active, 
 
button.accordion:hover { 
 
    background-color: #ddd; 
 
} 
 

 
div.panel { 
 
    padding: 0 18px; 
 
    background-color: white; 
 
    max-height: 0; 
 
    overflow: hidden; 
 
    transition: max-height 0.2s ease-out; 
 
}
<div class="wrapper"> 
 
    <div class="box item1"> 
 
    <button class="accordion" style="align:right;"> TOTALLY RANDOM TEXT FOR TESTING 
 
      <ul style="display:in-line;"> 
 
       <li> 
 
        <input type="checkbox" id="check1" /> 
 
        <label for="check1">YES</label> 
 
       </li> 
 
       <li> 
 
        <input type="checkbox" id="check2" /> 
 
        <label for="check2">NO</label> 
 
       </li> 
 
      </ul> 
 
     </button> 
 
    <div class="panel"> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
    </div> 
 

 
    <button class="accordionn">Section 2</button> 
 
    <div class="panel"> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
    </div> 
 

 
    <button class="accordionn">Section 3</button> 
 
    <div class="panel"> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
 
    </div> 
 
    </div> 
 
</div>

+0

谢谢,但第一个面板仍然打开点击,我希望它打开时,只有当你点击“是”复选框。我不太确定如何做到这一点。如果它通过使用JavaScript我完全不知道从哪里开始。 感谢您的答复。 – Genobee

+0

对不起,我明白了谢谢你! – Genobee

+0

不客气。祝你的项目好运 – Gerard

0

我得到了它的家伙! 以供参考这里是我正在尝试做的事情。

<div class="box item1"> 
      <button class="accordion_main" id="check_holder"> TOTALLY RANDOM TEXT FOR TESTING 
       <div class="check_box"> 
        <span> 
         <form name="aForm" action=""> 
          <p> 
          <label> 
           <!--<input type="checkbox" name="check" id="check" value="1"> YES--> 
           <input class="checkbx" id="check_main" name="Role" type="checkbox" value="yes"/>YES 
          </label> 
          <label> 
           <input class="checkbx" name="Role" type="checkbox" value="no"/> NO 
          </label> 
          </p> 
         </form> 
        </span> 
       </div> 
      </button> 
      <div class="panel_main" id="panel_main" style="display:none;text-align:center;"> 
       <div class="wrapper_acc"> 
        <div class="box_acc a_acc">A</div> 
        <div class="box_acc b_acc">B</div> 
        <div class="box_acc c_acc">C</div> 
        <div class="box_acc d_acc">D</div> 
        <div class="box_acc e_acc">E</div> 
        <div class="box_acc f_acc">F</div> 
       </div> 
      </div> 

<script> 
     var acc = document.getElementsByClassName("accordion_1"); 
     var i; 

     for (i = 0; i < acc.length; i++) { 
      acc[i].onclick = function() { 
      this.classList.toggle("active"); 
      var panel = this.nextElementSibling; 
      if (panel.style.maxHeight){ 
       panel.style.maxHeight = null; 
      } else { 
       panel.style.maxHeight = panel.scrollHeight + "px"; 
      } 
      } 
     } 

     $(document).ready(function() { 
      $('#check_main').change(function() { 
       $('#panel_main').toggle("fast","linear"); 

      }); 
     }); 
     $(".checkbx, .GrpChk").change(function() { 
      this.checked ? $("." + this.className).not(this).prop("disabled", true):$("." + this.className).not(this).prop("disabled", false); 
     }); 
    </script> 

而是采用对其他2片相同的过渡效果,我用这个代替

$('#panel_main').toggle("fast","linear"); 

,如果你注意到我打消了我的CSS div.panel。 达是我的主要错误,我的CSS是js的冲突。多谢你们!