Имитация щелчка для открытия элемента Bootstrap collapse

Я пытаюсь имитировать клик на Bootstrap collapse заголовок, но безуспешно.

что я действительно хочу сделать, это когда пользователь нажимает на изображение рядом с заголовком аккордеона, он открывается точно так же, как если бы пользователь нажал на <a> заголовка.

здесь скрипка для лучшего понимания

моя разметка HTML выглядит так:

<div class="accordion" id="accordionFilter">
    <div class="accordion-group">
        <div class="accordion-heading">
          <img src="http://placehold.it/40x40" onclick="SimulateClick();">
            <a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordionFilter" href="#collapseOne">
                Filter the results
            </a>
        </div>
        <div id="collapseOne" class="accordion-body collapse">
            <div class="accordion-inner">
                <div class="row">
                    <br>
                    <div class="col-lg-3 col-md-3 col-sm-3">
                        1st column content
                    </div>
                    <div class="col-lg-3 col-md-3 col-sm-3">
                         2nd column content
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

но я понятия не имею как чтобы написать "при нажатии на изображение, откройте аккордеон" в SimulateClick() метод JS.

Я пробовал с чем-то вроде

$("#collapseOne").click();

или

$("#collapseOne").addClass("in");

но он ничего не делает.


Есть идеи ?

2 ответов


вам не нужно имитировать щелчок, поскольку bootstrap предоставляет методы, которые можно использовать для программного управления плагинами. В этом случае есть 'toggle':

$('.accordion-heading img').click(function() {
  $('#collapseOne').collapse('toggle');
});
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script type="text/javascript" src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

<div class="accordion" id="accordionFilter">
  <div class="accordion-group">
    <div class="accordion-heading">
      <img src="http://placehold.it/40x40">
      <a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordionFilter" href="#collapseOne">
        Filter the results
      </a>
    </div>
    <div id="collapseOne" class="accordion-body collapse" style="height: 0px;">
      <div class="accordion-inner">
        <div class="row">
          <br>
          <div class="col-lg-3 col-md-3 col-sm-3">
            1st column content
          </div>
          <div class="col-lg-3 col-md-3 col-sm-3">
            2nd column content
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

подробнее о доступных методах API: http://getbootstrap.com/javascript/#collapse-usage


Если я правильно понял ваше требование, почему бы не включить <img> внутри <a> тег?

<a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordionFilter" href="#collapseOne">
      <img src="http://placehold.it/40x40">
       Filter the results
</a>

Is этой что тебе нужно?