Развернуть аккордеон, вызвав его идентификатор привязки из ссылки на той же странице? - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь открыть аккордеон по его идентификатору, который вызывается по ссылке в тексте. когда я нажимаю ссылку привязки с других страниц своего веб-сайта или напрямую ввожу ее URL-адрес привязки, он работает идеально, как и предполагалось (прокручивая вниз до положения аккордеона и открывая его), но он не открывает аккордеон, когда я нажимаю на привязанные ссылки на той же странице , он просто прокручивается до места расположения аккордеона.

Я пробовал каждый предложенный ответ в stackoverflow на похожие вопросы, например этот .

Это мой фрагмент, в этом примере все похоже на мой веб-сайт, а ссылка «go» только прокручивает страницу до аккордеона, но не открывает ее.

Спасибо за ваше время.

  $(document).ready(function() {
    //toggle the component with class accordion_body
    $(".accordion_head").click(function() {
      $(this).removeClass('coll-back');
      if ($('.accordion_body').is(':visible')) {
        $(".accordion_body").slideUp(300);
        $(".plusminus").text('+');
        $(this).removeClass('coll-back');
        $('.rmv-cls').removeClass('coll-back');
      }

      if($(this).next(".accordion_body").is(':visible')) {
        $(this).next(".accordion_body").slideUp(300);
        $(this).children(".plusminus").text('+');
        $(this).removeClass('coll-back');
      }else {
        $(this).next(".accordion_body").slideDown(300);
        $(this).children(".plusminus").text('');
        $(this).children(".plusminus").append('<hr class="hr-clc">');
        $(this).toggleClass('coll-back');
        $(this).addClass('rmv-cls');
      }
    });
  });
$(document).ready(function(){
 var hash = window.location.hash;
 if (hash) {
   var element = $(hash);
   if (element.length) {
   element.trigger('click');
 }
 }
});
$('.accordion_body').on('click', function(){
    $( ".accordion_body" ).acc-main({active:0});
});
$('.accordion_body').acc-main({
    //... options
    collapsible: false
});
$(function () {
    $(".tab-content").hide().first().show();
    $(".inner-nav li:first").addClass("active");

    $(".inner-nav a").on('click', function (e) {
        e.preventDefault();
        $(this).closest('li').addClass("active").siblings().removeClass("active");
        $($(this).attr('href')).show().siblings('.tab-content').hide();
    });

    var hash = $.trim( window.location.hash );

    if (hash) $('.inner-nav a[href$="'+hash+'"]').trigger('click');

});

 var hash = window.location.hash;
 var thash = hash.substring(hash.lastIndexOf('#'), hash.length);
 $('.accordion-main').find('a[href*='+ thash + ']').closest('h3').trigger('click')




var scrollToAndActivate = function(event) {
    event.preventDefault();
    var tabCheckboxId = this.getAttribute("href");
    var tabCheckbox = document.querySelector(tabCheckboxId);
    if (tabCheckbox) {
      tabCheckbox.checked = true;
      tabCheckbox.scrollIntoView(true);
    }
};

var allTopBarLinks= document.getElementsByClassName("announcement-bar--link");
for (var i = 0; i < allTopBarLinks.length; i++) {
    allTopBarLinks[i].addEventListener('click', scrollToAndActivate);
}
.gotext{font-size:100px;}
.acc-main {
  padding: 40px 0px 80px;
  color: #000;
}
.container {
  max-width: 790px;
  margin: 0 auto;
  width: 100%;
  padding: 0 15px;
}
.pockets-main h1 {
  font-size: 60px;
  font-weight: bold;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
  text-align: center;
  color: #111;
  margin: 0 0px 35px;
}
.intro-cont h3{
  font-size: 35px;
  font-weight: 600;
  color: #111;
  margin: 50px 0;
}
.kind h2{
  text-align:center;
  font-size: 45px;
  font-weight: 600;
  color: #111;
  margin: 50px 0 30px;
}
/*accordion*/
.accordion-main{
  margin-bottom:36px;
}
.accordion-main:last-child .accordion_body{
  padding-bottom: 0;
}
.accordion_head {
  background-color: #111;
  color: #fff;
  cursor: pointer;
  font-size: 24px;
  padding: 12px 25px;
  border-radius: 5px;
  border:1px solid 29705a;
  font-weight: normal;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
}
.accordion_body {
  background: transparent;
  font-size: 18px;
  text-align: center;
  padding: 50px 110px 5px;
}
.accordion_body img{
  width: 100%;
  max-width: 230px;
  margin-bottom: 30px;
}
.accordion_body p {
  margin: 0px;
  color: #000000;
}
.accordion_body h3,
.div-bott h3{
  font-size: 28px;
  font-weight: 600;
  margin: 15px 0;
  color: #1e352e;
}
.div-bott h3{
font-size: 35px;
}
.div-bott{
text-align:center;
}
.div-bott p{
font-size:24px;
}
.plusminus {
  float: right;
  font-size: 36px;
  margin-top: -9px;
}
.coll-back{
  background-color: #fff;
  color: #111;
  border:1px solid #111;
}
.hr-clc{
  height: 2px;
  background: #111;
  margin-top: 22px;
  width: 17px;
  padding: 0;
  border: 0;
  margin-left: -20px;
}

/*media queries*/
@media (min-width:992px) and (max-width:1100px){
  .pockets-main p {
    font-size: 22px;
    width: 684px;
    margin:0 auto;
    margin-bottom: 20px !important;
  }
  .accordion_body {
    padding: 35px 40px 5px;
  }
  .accordion_body img {
    max-width: 205px;
    margin-bottom: 20px;
  }
}
@media (min-width: 768px) and (max-width: 991px){
  .pockets-main {
    padding: 30px 15px;
  }
  .pockets-main h1 {
    font-size: 45px;
    margin: 0 0px 20px;
  }
  .pockets-main p {
    font-size: 20px !important;
    margin-bottom: 20px !important;
    width: 600px;
    margin: 0 auto;
  }
  .intro-cont h3,
  .div-bott h3{
    font-size: 30px;
    margin: 35px 0;
  }
  .kind h2 {
    font-size: 30px;
    margin: 35px 0 30px;
  }
  .accordion_head {
    font-size: 20px;
    padding: 11px 18px;
  }
  .plusminus {
    font-size: 27px;
    margin-top: -5px;
  }
  .accordion-main {
    margin-bottom: 24px;
  }
  .hr-clc {
    margin-top: 16px;
    width: 15px;
    margin-left: -15px;
  }
  .accordion_body {
    font-size: 18px;
    padding: 30px 40px 5px;
  }
  .accordion_body img {
    width: 100%;
    max-width: 185px;
    margin-bottom: 20px;
  }
  .accordion_body h3 {
    font-size: 24px;
  }
}

@media (min-width: 576px) and (max-width: 767px){
  .pockets-main {
    padding: 35px 15px;
  }
  .pockets-main h1 {
    font-size: 40px;
    margin: 0 0px 30px;
  }
  .pockets-main p {
    font-size: 18px !important;
    margin-bottom: 20px !important;
    width: 400px;
    margin: 0 auto;
  }
  .intro-cont h3,
  .div-bott h3{
    font-size: 26px;
    width: 400px;
    margin: 30px auto;
    line-height: 1.2 !important;
  }
  .div-bott h3{
  width:unset;
  }
  .kind h2 {
    font-size: 26px;
    margin: 30px 0 30px;
  }
  .accordion_head {
    font-size: 20px;
    padding: 10px 15px;
  }
  .accordion-main {
    margin-bottom: 25px;
  }
  .plusminus {
    font-size: 30px;
    margin-top: -5px;
  }
  .accordion_body {
    padding: 30px 25px 5px;
  }
  .accordion_body img {
    max-width: 170px;
    margin-bottom: 20px;
  }
  .hr-clc {
    margin-top: 17px;
    width: 16px;
  }
  .accordion_body h3 {
    font-size: 22px;
    margin: 15px 0;
  }
}
@media (max-width:575px){
  .pockets-main{
    padding:15px 0px;
  }
  .pockets-main h1 {
    font-size: 30px;
    margin: 0 0px 15px;
  }
  .pockets-main p {
    font-size: 16px !important;
    margin-bottom: 15px !important;
  }
  .intro-cont h3,
  .kind h2,
  .div-bott h3{
    margin: 30px 0px;
    line-height: normal !important;
    font-size:24px;
  }
  .accordion_head {
    font-size: 18px;
    padding: 8px 12px
  }
  .plusminus {
    font-size: 27px;
    margin-top: -7px;
  }
  .accordion-main {
    margin-bottom: 22px;
  }
  .accordion_body {
    font-size: 18px;
    padding: 20px 20px 5px;
  }
  .accordion_body img {
    max-width: 150px;
    margin-bottom: 20px;
  }
  .accordion_body h3 {
    font-size: 18px;
    margin: 10px 0;
    line-height: normal;
  }
  .hr-clc {
    height: 2px;
    margin-top: 16px;
    width: 15px;
    margin-left: -15px;
  }
}
<div><a class="gotext" href="#go">go</a></div>
<div class="acc-main">
  <div class="container">
    <div class="kind">
      <h2>space</h2>
            <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>
            <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>


      <div class="accordion_container">
        <div class="accordion-main">
          <div href="go" id="go" class="accordion_head">Accordian 1<span class="plusminus">+</span></div>
          <div class="accordion_body" data-external-trigger href="#go" id="go" style="display: none;">
            <p>Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem Ipsum</p>
          </div>
        </div>
        <div class="accordion-main">
          <div class="accordion_head">Accordion 2 <span class="plusminus">+</span></div>
          <div class="accordion_body" style="display: none;">
            <p>Lorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem Ipsum</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

1 Ответ

0 голосов
/ 11 июля 2020

  $(document).ready(function() {
    //toggle the component with class accordion_body
    $(".accordion_head").click(function() {
      $(this).removeClass('coll-back');
      if ($('.accordion_body').is(':visible')) {
        $(".accordion_body").slideUp(300);
        $(".plusminus").text('+');
        $(this).removeClass('coll-back');
        $('.rmv-cls').removeClass('coll-back');
      }

      if($(this).next(".accordion_body").is(':visible')) {
        $(this).next(".accordion_body").slideUp(300);
        $(this).children(".plusminus").text('+');
        $(this).removeClass('coll-back');
      }else {
        $(this).next(".accordion_body").slideDown(300);
        $(this).children(".plusminus").text('');
        $(this).children(".plusminus").append('<hr class="hr-clc">');
        $(this).toggleClass('coll-back');
        $(this).addClass('rmv-cls');
      }
    });
  });
$(document).ready(function(){
 var hash = window.location.hash;
 if (hash) {
   var element = $(hash);
   if (element.length) {
   element.trigger('click');
 }
 }
});
$('.accordion_body').on('click', function(){
    $( ".accordion_body" ).acc-main({active:0});
});

$(function () {
    $(".tab-content").hide().first().show();
    $(".inner-nav li:first").addClass("active");

    $(".inner-nav a").on('click', function (e) {
        e.preventDefault();
        $(this).closest('li').addClass("active").siblings().removeClass("active");
        $($(this).attr('href')).show().siblings('.tab-content').hide();
    });

    var hash = $.trim( window.location.hash );

    if (hash) $('.inner-nav a[href$="'+hash+'"]').trigger('click');

});


var scrollToAndActivate = function(event) {
    event.preventDefault();
    var tabCheckboxId = this.getAttribute("href");
    var tabCheckbox = document.querySelector(tabCheckboxId);
    if (tabCheckbox) {
      tabCheckbox.checked = true;
      tabCheckbox.scrollIntoView(true);
    }
};

var allTopBarLinks= document.getElementsByClassName("announcement-bar--link");
for (var i = 0; i < allTopBarLinks.length; i++) {
    allTopBarLinks[i].addEventListener('click', scrollToAndActivate);
}


$( ".gotext" ).on( "click", function() {
$("#go").click(); 
});
.gotext{font-size:100px;}
.acc-main {
  padding: 40px 0px 80px;
  color: #000;
}
.container {
  max-width: 790px;
  margin: 0 auto;
  width: 100%;
  padding: 0 15px;
}
.pockets-main h1 {
  font-size: 60px;
  font-weight: bold;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
  text-align: center;
  color: #111;
  margin: 0 0px 35px;
}
.intro-cont h3{
  font-size: 35px;
  font-weight: 600;
  color: #111;
  margin: 50px 0;
}
.kind h2{
  text-align:center;
  font-size: 45px;
  font-weight: 600;
  color: #111;
  margin: 50px 0 30px;
}
/*accordion*/
.accordion-main{
  margin-bottom:36px;
}
.accordion-main:last-child .accordion_body{
  padding-bottom: 0;
}
.accordion_head {
  background-color: #111;
  color: #fff;
  cursor: pointer;
  font-size: 24px;
  padding: 12px 25px;
  border-radius: 5px;
  border:1px solid 29705a;
  font-weight: normal;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
}
.accordion_body {
  background: transparent;
  font-size: 18px;
  text-align: center;
  padding: 50px 110px 5px;
}
.accordion_body img{
  width: 100%;
  max-width: 230px;
  margin-bottom: 30px;
}
.accordion_body p {
  margin: 0px;
  color: #000000;
}
.accordion_body h3,
.div-bott h3{
  font-size: 28px;
  font-weight: 600;
  margin: 15px 0;
  color: #1e352e;
}
.div-bott h3{
font-size: 35px;
}
.div-bott{
text-align:center;
}
.div-bott p{
font-size:24px;
}
.plusminus {
  float: right;
  font-size: 36px;
  margin-top: -9px;
}
.coll-back{
  background-color: #fff;
  color: #111;
  border:1px solid #111;
}
.hr-clc{
  height: 2px;
  background: #111;
  margin-top: 22px;
  width: 17px;
  padding: 0;
  border: 0;
  margin-left: -20px;
}

/*media queries*/
@media (min-width:992px) and (max-width:1100px){
  .pockets-main p {
    font-size: 22px;
    width: 684px;
    margin:0 auto;
    margin-bottom: 20px !important;
  }
  .accordion_body {
    padding: 35px 40px 5px;
  }
  .accordion_body img {
    max-width: 205px;
    margin-bottom: 20px;
  }
}
@media (min-width: 768px) and (max-width: 991px){
  .pockets-main {
    padding: 30px 15px;
  }
  .pockets-main h1 {
    font-size: 45px;
    margin: 0 0px 20px;
  }
  .pockets-main p {
    font-size: 20px !important;
    margin-bottom: 20px !important;
    width: 600px;
    margin: 0 auto;
  }
  .intro-cont h3,
  .div-bott h3{
    font-size: 30px;
    margin: 35px 0;
  }
  .kind h2 {
    font-size: 30px;
    margin: 35px 0 30px;
  }
  .accordion_head {
    font-size: 20px;
    padding: 11px 18px;
  }
  .plusminus {
    font-size: 27px;
    margin-top: -5px;
  }
  .accordion-main {
    margin-bottom: 24px;
  }
  .hr-clc {
    margin-top: 16px;
    width: 15px;
    margin-left: -15px;
  }
  .accordion_body {
    font-size: 18px;
    padding: 30px 40px 5px;
  }
  .accordion_body img {
    width: 100%;
    max-width: 185px;
    margin-bottom: 20px;
  }
  .accordion_body h3 {
    font-size: 24px;
  }
}

@media (min-width: 576px) and (max-width: 767px){
  .pockets-main {
    padding: 35px 15px;
  }
  .pockets-main h1 {
    font-size: 40px;
    margin: 0 0px 30px;
  }
  .pockets-main p {
    font-size: 18px !important;
    margin-bottom: 20px !important;
    width: 400px;
    margin: 0 auto;
  }
  .intro-cont h3,
  .div-bott h3{
    font-size: 26px;
    width: 400px;
    margin: 30px auto;
    line-height: 1.2 !important;
  }
  .div-bott h3{
  width:unset;
  }
  .kind h2 {
    font-size: 26px;
    margin: 30px 0 30px;
  }
  .accordion_head {
    font-size: 20px;
    padding: 10px 15px;
  }
  .accordion-main {
    margin-bottom: 25px;
  }
  .plusminus {
    font-size: 30px;
    margin-top: -5px;
  }
  .accordion_body {
    padding: 30px 25px 5px;
  }
  .accordion_body img {
    max-width: 170px;
    margin-bottom: 20px;
  }
  .hr-clc {
    margin-top: 17px;
    width: 16px;
  }
  .accordion_body h3 {
    font-size: 22px;
    margin: 15px 0;
  }
}
@media (max-width:575px){
  .pockets-main{
    padding:15px 0px;
  }
  .pockets-main h1 {
    font-size: 30px;
    margin: 0 0px 15px;
  }
  .pockets-main p {
    font-size: 16px !important;
    margin-bottom: 15px !important;
  }
  .intro-cont h3,
  .kind h2,
  .div-bott h3{
    margin: 30px 0px;
    line-height: normal !important;
    font-size:24px;
  }
  .accordion_head {
    font-size: 18px;
    padding: 8px 12px
  }
  .plusminus {
    font-size: 27px;
    margin-top: -7px;
  }
  .accordion-main {
    margin-bottom: 22px;
  }
  .accordion_body {
    font-size: 18px;
    padding: 20px 20px 5px;
  }
  .accordion_body img {
    max-width: 150px;
    margin-bottom: 20px;
  }
  .accordion_body h3 {
    font-size: 18px;
    margin: 10px 0;
    line-height: normal;
  }
  .hr-clc {
    height: 2px;
    margin-top: 16px;
    width: 15px;
    margin-left: -15px;
  }
}
<div><a class="gotext" href="#go">go</a></div>
<div class="acc-main">
  <div class="container">
    <div class="kind">
      <h2>space</h2>
            <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>
            <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>

      <h2>space</h2>


      <div class="accordion_container">
        <div class="accordion-main">
          <div href="go" id="go" class="accordion_head">Accordian 1<span class="plusminus">+</span></div>
          <div class="accordion_body" data-external-trigger href="#go" id="go" style="display: none;">
            <p>Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem Ipsum</p>
          </div>
        </div>
        <div class="accordion-main">
          <div class="accordion_head">Accordion 2 <span class="plusminus">+</span></div>
          <div class="accordion_body" style="display: none;">
            <p>Lorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem IpsumLorem Ipsum</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

У вас было несколько JS ошибок, но в основном я думаю, что это то, что вам нужно?

$( ".gotext" ).on( "click", function() {
$("#go").click(); 
});

Это просто имитирует щелчок по первому заголовку аккордеона, когда вы щелкаете «go»

...