选中复选框后,Twitter Bootstrap 3崩溃

Dj.*_*ise 10 javascript jquery jquery-ui-accordion twitter-bootstrap twitter-bootstrap-3

手风琴必须在选中复选框时折叠.并且必须在未经检查时隐藏.

这是代码:http://jsfiddle.net/UwL5L/2/

为什么不检查?

            <div class="panel-group driving-license-settings" id="accordion">
                <div class="panel panel-default">
                    <div class="panel-heading">
                          <h4 class="panel-title">
                            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
                                <input type="checkbox" value=""> I have Driver License  
                            </a>
                          </h4>
                    </div>
                    <div id="collapseOne" class="panel-collapse collapse in">
                        <div class="panel-body">
                            <div class="driving-license-kind">
                                <div class="checkbox">
                                    <input type="checkbox" value="">A
                                </div>
                                <div class="checkbox">
                                    <input type="checkbox" value="">B
                                </div>
                                <div class="checkbox">
                                    <input type="checkbox" value="">C
                                </div>
                                <div class="checkbox">
                                    <input type="checkbox" value="">D
                                </div>
                                <div class="checkbox">
                                    <input type="checkbox" value="">E
                                </div>                                                                                                          
                            </div>
                        </div>
                    </div>
                </div>
            </div>
Run Code Online (Sandbox Code Playgroud)

Gav*_*vin 62

这是我的解决方案,通过向复选框添加标签包​​装而不是超链接来工作:

<div class="checkbox">
    <label data-toggle="collapse" data-target="#collapseOne">
        <input type="checkbox"/> I have Driver License  
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/L0h3s7uf/1/

  • 不,如果您快速双击该区域将显示的复选框,但将取消选中该复选框 (19认同)
  • @ SpoiledTechie.com告诉我的用户和QA (5认同)
  • IMO,这是最好的答案.它导致最少量的代码编写,折叠正确的元素,并产生一个正确行为的复选框,不会采取类似链接的行为和样式.这似乎是解决OP问题的唯一答案.很高兴我也找到了它,因为它也解决了我的问题. (4认同)
  • @BlackICE 那么别点击那么快。这是一个很好的答案! (2认同)

Pim*_*Web 11

JS(小提琴:http://jsfiddle.net/h44PJ/):

$('.collapse').collapse();

// Don't collapse on checkbox click
$('.panel-heading h4 a input[type=checkbox]').on('click', function(e) {
    e.stopPropagation();
});

// Cancel show event if not checked
$('#collapseOne').on('show.bs.collapse', function(e) {
    if(!$('.panel-heading h4 a input[type=checkbox]').is(':checked'))
    {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

更新(小提琴:http://jsfiddle.net/h44PJ/567/):

$('.collapse').collapse();

$('.panel-heading h4 a input[type=checkbox]').on('click', function(e) {
    e.stopPropagation();
    $(this).parent().trigger('click');   // <---  HERE
});

$('#collapseOne').on('show.bs.collapse', function(e) {
    if(!$('.panel-heading h4 a input[type=checkbox]').is(':checked'))
    {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)