twitter bootstrap - Acordeón Bootstrap: ¿cómo hacer clic en el botón completo?
table collapse bootstrap (3)
agrego un menú de acordeón a mi sitio, usando este ejemplo:
<div class="bs-example">
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">1. Menu number one</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<p>Menu number one text</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">2. Menu number two</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse">
<div class="panel-body">
<p>Menu number two</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">3. Menu number three</a>
</h4>
</div>
<div id="collapseThree" class="panel-collapse collapse">
<div class="panel-body">
<p>Menu number three</p>
</div>
</div>
</div>
</div>
</div>
Puedes verlo en vivo aquí
¿Sabes cómo puedo hacer clic en el botón completo? Por el momento, solo el título lo hace.
Gracias de antemano
Cree el evento click event .panel-heading
y en el evento compruebe si .panel-heading
segundo antecesor de .panel-heading
es <a class="" href="#colapseXXXXX" data-parent="#accordion" data-toggle="collapse"></a>
. Por ejemplo, verificar el valor en href. Luego, si es true trigger, haz clic en <a>
.
Prueba este código:
$(''.panel-heading'').on(''click'', function () {
var a = $(this).childen(''.panel-title'').children(''a'');
var ahref = a.prop(''href'');
if (ahref.indexOf(''#collapse'') > -1)
{
a.trigger("click");
}
});
Solución de trabajo:
$(document).ready(function(){
$(''.panel-heading'').on(''click'', function () {
var a = $(this).find(''a'');
var ahref = a.prop(''href'');
if (ahref.indexOf(''#collapse'') > -1)
{
$(''.panel-collapse'').removeClass(''in'');
$(this).next(''div'').addClass(''in'');
}
});
$(".panel-heading a").on(''click'', function(event) {
$(this).closest(''.panel-heading'').trigger(''click'');
return false;
});
});;
Disparar haga clic en causar que el burbujeo vuelva a hacer clic en el evento .panel-heading y .panel-heading esté activando el clic nuevamente haciendo un ciclo infinito. Si trato de prevenirDefault () también evito el comportamiento predeterminado de arranque, así que hacer clic no cambió nada. La solución anterior es la única en mi opinión.
Solo una nota,
¿Intentó sacar el a fuera de la clase h4? entonces en lugar de
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">1. Menu number one</a>
</h4>
</div>
tratar
<div class="panel-heading">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
<h4 class="panel-title">1. Menu number one</h4>
</a>
</div>
Sé que este es un hilo viejo, pero tuve el mismo problema y lo resolví de manera más fácil.
Simplemente dale a tu ".panel-title a" una pantalla de bloque
Si los padres divs obtuvieron relleno, establézcalo en 0 y configúrelo en su .panel-title a
.panel-heading{
padding: 0;
}
.panel-title a{
display: block;
padding: 15px;
}
No hay necesidad de .js aquí