javascript - 将 DRY 放大 ibox-content 函数转换为动态函数

标签 javascript twitter-bootstrap button

我创建了一堆 DRY 函数,这些函数会将 Bootstrap ibox 内容从最初的任何列大小增加到最大列大小 (12)。因此,我需要帮助创建一个动态函数,该函数适用于所有具有放大功能的按钮,方法是在单击时将 ibox-content 增加到最大列大小,然后在再次单击时恢复到其原始列大小。

<强> JsFiddle

HTML

<div class="row">
    <div class="col-lg-6" id="elements">
        <div class="ibox float-e-margins" id="elementBox">           
            <div class="ibox-title" tabindex="0">
                <button type="button" class="btn btn-xs btn-go-1">
                    <i class="glyphicon glyphicon-fullscreen"></i>
                </button> 
            </div>
            <div class="ibox-content short-box" id="ibox-1">
                content
            </div>
        </div>
    </div>
</div>

JAVASCRIPT

 $(".btn-go-1").click(function () {
     $("#elements").toggleClass("col-lg-6 col-lg-12", 1000, "linear");
     $("#ibox-1").toggleClass("short-box large-box", 1000, "linear");
 });

最佳答案

  1. 为您的容器提供相同的类,例如container
  2. 为您的按钮提供相同的类,例如 btn-go
  3. 添加data-* 属性保存每个容器的默认大小,例如:

    <div data-default='col-xs-6' class="container col-xs-6" id="strageties">
    
  4. btn-go 创建一键事件:

    $(".btn-go").click(function () {
        var container = $(this).parents('.container');
        var default_size = container.data('default');
    
        //Toggle between default size and max size
        container.toggleClass(default_size+" col-xs-12",1000,"linear");
        container.find(".ibox-content").toggleClass("short-box large-box", 1000, "linear");
    });
    

希望这有帮助。

$(".btn-go").click(function () {
  var container = $(this).parents('.container');
  var default_size = container.data('default');
  
  container.toggleClass(default_size+" col-xs-12", 1000, "linear");
  container.find(".ibox-content").toggleClass("short-box large-box", 1000, "linear");
});
.container{
  border: 1px solid #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
  <div data-default='col-xs-6' class="container col-xs-6" id="elements">
    <div class="ibox float-e-margins">           
      <div class="ibox-title" tabindex="0">
        <button type="button" class="btn btn-xs btn-go">
          <i class="glyphicon glyphicon-fullscreen"></i>
        </button> 
      </div>
      <div class="ibox-content short-box" id="ibox-1">
        content
      </div>
    </div>
  </div>
</div>

<div class="row">
  <div data-default='col-xs-6' class="container col-xs-6" id="strageties">
    <div class="ibox float-e-margins">           
      <div class="ibox-title" tabindex="0">
        <button type="button" class="btn btn-xs btn-go">
          <i class="glyphicon glyphicon-fullscreen"></i>
        </button> 
      </div>
      <div class="ibox-content short-box" id="ibox-2">
        content
      </div>
    </div>
  </div>
</div>

<div class="row">
  <div data-default='col-xs-8' class="container col-xs-8" id="map">
    <div class="ibox float-e-margins">           
      <div class="ibox-title" tabindex="0">
        <button type="button" class="btn btn-xs btn-go">
          <i class="glyphicon glyphicon-fullscreen"></i>
        </button> 
      </div>
      <div class="ibox-content short-box" id="ibox-3">
        content
      </div>
    </div>
  </div>
</div>

关于javascript - 将 DRY 放大 ibox-content 函数转换为动态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315665/

相关文章:

javascript - 对从 AJAX 发送到我的 Express 服务器的请求路径感到困惑

javascript - Google Maps API - map 不显示 - 没有错误

javascript - 使用 TypeScript react Children[] 问题

javascript - 如何使用 CSS/Javascript 在 HTML 上防止 iOS 上的自动旋转图像

css - 如何在不覆盖的情况下中和 CSS 定义

ios - 带有 UIView 的 SwiftUI 按钮

javascript - 如何创建一个每次单击按钮时逐渐减少 2 行不透明度的函数

html - 是否有点击 div 的代码?

javascript - 谷歌地图在 Bootstrap 中显示灰色内部模态

html - Fontawesome 的复选框改变背景颜色(仅 CSS)