【问题标题】:How to close other panels when another one is opened打开另一个面板时如何关闭其他面板
【发布时间】:2015-06-29 08:55:15
【问题描述】:

我是 bootstrap 和 jquery 的新手,使用下面的代码创建许多引导面板,我的问题是我想在单击一个面板的全尺寸图标时关闭其他面板 有人知道怎么做吗? 谢谢

<div class="panel panel-primary">
  <div class="panel-heading">
    <h4 class="panel-title"> Panel Widget Title
      <div class="pull-right"> <a href="#" data-perform="panel-dismiss" class="btn btn-primary btn-xs pull-right"><i class="fa fa-times"></i></a> <a href="#" data-perform="panel-collapse" class="btn btn-primary btn-xs pull-right"><i class="fa fa-minus"></i></a> </div>
    </h4>
  </div>
  <div class="panel-wrapper collapse in">
    <div class="panel-body"> Panel Widget Body </div>
  </div>
</div>
<div class="panel panel-primary">
  <div class="panel-heading">
    <h4 class="panel-title"> Panel Widget Title
      <div class="pull-right"> <a href="#" data-perform="panel-dismiss" class="btn btn-primary btn-xs pull-right"><i class="fa fa-times"></i></a> <a href="#" data-perform="panel-collapse" class="btn btn-primary btn-xs pull-right"><i class="fa fa-minus"></i></a> </div>
    </h4>
  </div>
  <div class="panel-wrapper collapse in">
    <div class="panel-body"> Panel Widget Body </div>
  </div>
</div>
<div class="panel panel-primary">
  <div class="panel-heading">
    <h4 class="panel-title"> Panel Widget Title
      <div class="pull-right"> <a href="#" data-perform="panel-dismiss" class="btn btn-primary btn-xs pull-right"><i class="fa fa-times"></i></a> <a href="#" data-perform="panel-collapse" class="btn btn-primary btn-xs pull-right"><i class="fa fa-minus"></i></a> </div>
    </h4>
  </div>
  <div class="panel-wrapper collapse in">
    <div class="panel-body"> Panel Widget Body </div>
  </div>
</div>

<script type="text/javascript">
    $(document).ready(function() {

    (function($, window, document){
    var panelSelector = '[data-perform="panel-collapse"]';

    $(panelSelector).each(function() {
    var $this = $(this),
    parent = $this.closest('.panel'),
    wrapper = parent.find('.panel-wrapper'),
    collapseOpts = {toggle: false};

    if( ! wrapper.length) {
    wrapper =
    parent.children('.panel-heading').nextAll()
    .wrapAll('<div/>')
    .parent()
    .addClass('panel-wrapper');
    collapseOpts = {};
    }
    wrapper
    .collapse(collapseOpts)
    .on('hide.bs.collapse', function() {
    $this.children('i').removeClass('fa-minus').addClass('fa-plus');
    })
    .on('show.bs.collapse', function() {
    $this.children('i').removeClass('fa-plus').addClass('fa-minus');
    });
    });
    $(document).on('click', panelSelector, function (e) {
    e.preventDefault();
    var parent = $(this).closest('.panel');
    var wrapper = parent.find('.panel-wrapper');
    wrapper.collapse('toggle');
    });
    }(jQuery, window, document));


    (function($, window, document){
    var panelSelector = '[data-perform="panel-dismiss"]';
    $(document).on('click', panelSelector, function (e) {
    e.preventDefault();
    var parent = $(this).closest('.panel');
    removeElement();

    function removeElement() {
    var col = parent.parent();
    parent.remove();
    col.filter(function() {
    var el = $(this);
    return (el.is('[class*="col-"]') && el.children('*').length === 0);
    }).remove();
    }
    });
    }(jQuery, window, document));

    });
</script>

JSFIDDLE link

【问题讨论】:

  • 当前问题是什么.. 它会抛出任何错误吗?如果是的话,发生错误的地方是什么。你已经尝试过什么了吗??
  • 请在小提琴中添加您的代码

标签: javascript jquery twitter-bootstrap panel


【解决方案1】:

Bootstrap 提供 collapse.js 来做同样的事情。

这是参考:Bootstrap

或前往fiddle

你只需要这样做:

$('.panel-title a').collapse();

【讨论】:

  • 请在回答前仔细阅读问题。用户没有询问手风琴的任何事情,他的要求与手风琴不同。请仔细阅读对话
  • @robodev 我推荐了他折叠插件,因为他在问题的脚本中使用了 collapse() 函数,并且他想在单击一个面板标题时关闭其他面板。我认为您的回答与我在之前的小提琴演示中的回答相同。
【解决方案2】:

由于您的问题有点模糊,我不清楚您的要求。 请查看此代码。我想这可能是你的问题

摆弄here

HTML

//Same as in you code, java script part is not needed

JQUERY

    $(document).ready(function () {
    $(".panel-heading").click(function () {
        $(this).closest(".panel").find(".panel-body").toggleClass("hide");
    });
    $(".fa.fa-times").click(function(){
        $(".panel-body").addClass("hide");
        $(this).parent(".panel").find(".panel-body").removeClass("hide");
    });
});

编辑

检查更新fiddle

【讨论】:

  • 感谢您的回答,但这不是我想做的,事实上,当我单击面板标题按钮时,我想要调整当前面板的大小并关闭其他面板
  • "面板标题按钮" ?那是什么 ?你说的当前面板是什么意思? .
  • 是每个面板标题中的按钮,我现在用来关闭当前面板我的意思是用户用鼠标单击它的面板
  • 我想做的是当我点击面板的这个按钮时,其他面板关闭并且当前面板仍然打开
  • 这意味着您希望在单击标题时打开面板,并希望在单击最小化图标时关闭其他面板,不是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 2018-12-14
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多