简体   繁体   English

jQuery手风琴打开/关闭

[英]jquery accordion open/close

I'm using a jquery accordion with special functionality. 我正在使用具有特殊功能的jQuery手风琴。 In 99% of cases it functions just as it should. 在99%的情况下,其功能均应正常运行。 I have a use case where I need to open the top/first accordion on page load while maintaining the functionality (in this case plus/minus with corresponding state open or close using font-awesome). 我有一个用例,需要在保持功能的同时在页面加载时打开顶部/第一手风琴(在这种情况下,正负号对应的状态是使用font-awesome打开或关闭)。

I can get the accordion to open by hard coding class "open" and "display: block;". 我可以通过硬编码类“ open”和“ display:block;”来打开手风琴。 By doing so, it screws up my font awesome state. 这样做会搞乱我的字体超赞状态。

JSFiddle JSFiddle

HTML 的HTML

<div class="accordion-container">
  <a class="accordion-toggle" href="#"><span class="toggle-head"><h2 class="t-h2">Web Ready Lorem Ipsum</h2>

    </span><span class="toggle-icon"><i class="fa fa-plus"></i></span></a>
  <div class="accordion-content">
    <p>The images below provide examples of safe sleep environments that follow the safe sleep strategies explained in Safe to Sleep<sup>®</sup> materials.</p>
    <p>These low-resolution images are available for your convenience. If you choose to use the images, you are agreeing to: </p>
    <ul class="sts-bullet">
      <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
      <li>Duis malesuada purus sit amet tellus semper tempus.</li>
      <li>Etiam iaculis est ac erat mollis, vitae vulputate ante sagittis.</li>
      <li>Mauris interdum nulla interdum libero hendrerit interdum.</li>
      <li>Cras aliquet arcu vitae mattis congue.Cras aliquet arcu vitae mattis congue.</li>
      <li>Vivamus bibendum arcu vel enim luctus, eu dignissim erat efficitur.</li>
    </ul>
  </div>
</div>
<div class="accordion-container">
  <a class="accordion-toggle" href="#"><span class="toggle-head"><h2 class="t-h2">Web-Ready Lorem Ipsum is simply dummy text 2</h2>

    </span><span class="toggle-icon"><i class="fa fa-plus"></i></span></a>
  <div class="accordion-content">
    <p>The images below provide examples of safe sleep environments that follow the safe sleep strategies explained in Safe to Sleep<sup>®</sup> materials.</p>
    <p>These low-resolution images are available for your convenience. If you choose to use the images, you are agreeing to: </p>
    <ul class="sts-bullet">
      <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
      <li>Duis malesuada purus sit amet tellus semper tempus.</li>
      <li>Etiam iaculis est ac erat mollis, vitae vulputate ante sagittis.</li>
      <li>Mauris interdum nulla interdum libero hendrerit interdum.</li>
      <li>Cras aliquet arcu vitae mattis congue.Cras aliquet arcu vitae mattis congue.</li>
      <li>Vivamus bibendum arcu vel enim luctus, eu dignissim erat efficitur.</li>
    </ul>
  </div>
</div>
<div class="accordion-container">
  <a class="accordion-toggle" href="#"><span class="toggle-head"><h2 class="t-h2">Web-Ready Lorem Ipsum is simply dummy text 3</h2>

    </span><span class="toggle-icon"><i class="fa fa-plus"></i></span></a>
  <div class="accordion-content">
    <p>The images below provide examples of safe sleep environments that follow the safe sleep strategies explained in Safe to Sleep<sup>®</sup> materials.</p>
    <p>These low-resolution images are available for your convenience. If you choose to use the images, you are agreeing to: </p>
    <ul class="sts-bullet">
      <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
      <li>Duis malesuada purus sit amet tellus semper tempus.</li>
      <li>Etiam iaculis est ac erat mollis, vitae vulputate ante sagittis.</li>
      <li>Mauris interdum nulla interdum libero hendrerit interdum.</li>
      <li>Cras aliquet arcu vitae mattis congue.Cras aliquet arcu vitae mattis congue.</li>
      <li>Vivamus bibendum arcu vel enim luctus, eu dignissim erat efficitur.</li>
    </ul>
  </div>
</div>

CSS 的CSS

/*ACCORDION*/
.accordion-container {
    width: 100%;
    margin-top: 1em;
    /*clear: both;*/
}

.toggle-head {
    display: block;
    max-width: 95%;
    font-weight: 700;
}

.accordion-toggle {
    position: relative;
    display: block;
    padding: 10px;
    font-size: 1em;
    font-weight: 400;
    background: #f3f3f3;
    color: #000 !important;
    text-decoration: none !important;
}

.accordion-toggle.open {
    background: #f3f3f3;
    color: #fff;
}

.accordion-toggle:hover {
    background: #E8E8E8;
}

.accordion-toggle span.toggle-icon {
    position: absolute;
    right: .5em;
    font-size: 1.5em;
    color: #65308a;
    top: .5em;
}

.accordion-content {
    display: none;
    padding: 20px;
    overflow: auto;
    background-color: transparent;
}

jQuery jQuery的

$(document).ready(function() {
  $('.accordion-toggle').on('click', function(event) {
    event.preventDefault();
    // create accordion variables
    var accordion = $(this);
    var accordionContent = accordion.next('.accordion-content');
    var accordionToggleIcon = $(this).children('.toggle-icon');

    // toggle accordion link open class
    accordion.toggleClass("open");
    // toggle accordion content
    accordionContent.slideToggle(250);

    // change plus/minus icon
    if (accordion.hasClass("open")) {
      accordionToggleIcon.html("<i class='fa fa-minus'></i>");
    } else {
      accordionToggleIcon.html("<i class='fa fa-plus'></i>");
    }

  });
});

You can force the click so you can reuse your function. 您可以强制单击,以便重新使用功能。 Add an id to the accordion you want to open... 向您要打开的手风琴添加一个ID ...

  <a class="accordion-toggle" id="ac1" .... > </a>

Then at the end of the script, add 然后在脚本末尾添加

$('#ac1').click();

You can also trigger a click with trigger() method. 您也可以使用trigger()方法触发点击。 Using trigger() instead of click() will eliminate ambiguous calls. 使用trigger()代替click()将消除模棱两可的调用。

$('#ac1').trigger('click'); 

Just trigger click on the first element: 只需触发单击第一个元素:

    $(document).ready(function() {
      var toggles = $('.accordion-toggle')
      toggles.on('click', function(event) {
           event.preventDefault();
           // create accordion variables
           var accordion = $(this);
           var accordionContent = accordion.next('.accordion-content');
           //// ...............

      });
      // Fire click! /////////////////
      toggles.first().trigger('click');
      /////////////////////////////////
   });

在此处输入图片说明 > >

class="toggle-head">Web Ready Lorem Ipsum - class =“ toggle-head”>可用于Web的Lorem Ipsum-

name all the elements that are going to be effected as shown above and then do this at the end of the 命名所有将要受到影响的元素,如上所示,然后在

$("#oLink").addClass("open"); // link name
$("#oLinkDiv").show(); //div name you want to show
$("#oLinkSpan").html(''); //span that you want to change to - sign
$("#oLinkSpan").html('<i class="fa fa-minus"></i>'); //chaging sing to minus

$(document).ready(function() { $(document).ready(function(){

check the image for details of your fiddle 检查图像以获取小提琴的细节

页面的完整图片

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

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