代码之家  ›  专栏  ›  技术社区  ›  JacobIRR

代理面板标题单击到引导手风琴的内部链接

  •  0
  • JacobIRR  · 技术社区  · 7 年前

    我有一个引导面板手风琴:

    <div class="modal-body">
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
          <div class="panel panel-default">
             <div class="panel-heading" role="tab" id="headingOne">
                <h4 class="panel-title">
                   <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne" class="collapsed">
                   Annual </a>
                </h4>
             </div>
             <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne" aria-expanded="false" style="height: 0px;">
                <div class="panel-body"></div>
             </div>
          </div>
          <div class="panel panel-default">
             <div class="panel-heading" role="tab" id="headingTwo">
                <h4 class="panel-title">
                   <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                   Semi-Annual </a>
                </h4>
             </div>
             <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo" aria-expanded="false" style="height: 0px;">
                <div class="panel-body"></div>
             </div>
          </div>
       </div>
    </div>
    

    而不是点击 <a> 链接,我要整个 .panel-heading 触发内部单击 <A & GT; .

    我不能使用下面的代码,因为 Maximum call stack size exceeded 错误:

    panelHeadings.on('click', function (e) {
        $(this).find('a').click(); // trigger('click') behaves the same
        e.stopPropagation();
        e.preventDefault();
        return false;
    });
    

    …但使用答案中的代码 this question 当我点击时不会发生任何事情:

    panelHeadings.on('click', function (e) {
        $(this).find('a').triggerHandler('click');
        e.stopPropagation();
        e.preventDefault();
    });
    

    是否有其他方法触发内部A上的单击事件?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Shashank    7 年前

    这是一种方法-使用 BS-collapse-toggle :

    锚标记的默认事件被阻止,新事件被添加到 panel-heading :

    $('div#accordion .panel-heading a[data-toggle="collapse"]').on('click', function (e) {
      e.preventDefault();
    });
    
    $('div#accordion .panel-heading').on('click', function() {
      $(this).parent().find('.collapse').collapse('toggle');
    });
    

    $('div#accordion .panel-heading a[data-toggle="collapse"]').on('click', function (e) {
    	e.preventDefault();
    });
    
    $('div#accordion .panel-heading').on('click', function() {
    	$(this).parent().find('.collapse').collapse('toggle');
    });
    div#accordion .panel-heading {
      cursor: pointer;
    }
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    
    <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
    <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
          <div class="panel panel-default">
             <div class="panel-heading" role="tab" id="headingOne">
                <h4 class="panel-title">
                   <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne" class="collapsed">
                   Annual </a>
                </h4>
             </div>
             <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne" aria-expanded="false" style="height: 0px;">
                <div class="panel-body"></div>
             </div>
          </div>
          <div class="panel panel-default">
             <div class="panel-heading" role="tab" id="headingTwo">
                <h4 class="panel-title">
                   <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                   Semi-Annual </a>
                </h4>
             </div>
             <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo" aria-expanded="false" style="height: 0px;">
                <div class="panel-body"></div>
             </div>
          </div>
       </div>

    希望这有帮助。