JavaScript

让 Bootstrap 的组件活起来,现有一共有 13 个 jQuery 插件。

独立或统一

Bootstrap 的 JavaScript 插件可以放在各自的单独的文件里(注意插件之间可能有依赖关系),或者它们在同一个文件里。bootstrap.jsbootstrap.min.js 都会包含所有的插件。

数据属性

你可以单纯的通过通过代码 API 来使用所有 Bootstrap 的插件, 不需要你写一行 JavaScript 的代码,这是 Boostrap 的首选类 API,而且也应该是你在使用插件时首先要考虑的。

即使如何,在某些情况下你可能需要关掉这个功能。因此我们可以让你关掉数据属性 API,你可以这样做:

$('body').off('.data-api')

或者,你也可以针对指定的插件,比如像这样:

$('body').off('.alert.data-api')

关掉了警示插件的数据属性 API。

编程 API

你可以通过 JavaScript API 使用所有的 Bootstrap 插件,所有公共 API 都是单一的,可链式的方法,并返回动作集。

$(".btn.danger").button("toggle").addClass("fat")

所有方法可以拥有一个可选的选项对象,一个针对特定方法的字符串,或者不使用(使用默认的行为):

$("#myModal").modal()                       // 默认初始化
$("#myModal").modal({ keyboard: false })   // 无键盘初始化
$("#myModal").modal('show')                // 初始化并立即调用显示

每个插件同时会在 'Constructor' 属性 $.fn.popover.Constructor 公开它们原始构造函数。如果你想获取特定插件的实例,可以直接在从 $('[rel=popover]').data('popover') 检索。

无冲突

有时候 Bootstrap 需要与其它的界面架构一起使用。在这些情况下,偶尔会发生命名冲突。如果出现这样的错误,你可以在插件上调用 .noConflict

var bootstrapButton = $.fn.button.noConflict() // 返回 $.fn.button 到之前分配的值
$.fn.bootstrapBtn = bootstrapButton            // 给 $().bootstrapBtn bootstrap 功能

事件

Bootstrap 为大部分插件的特定动作都提供自定义事件。比如像 show 会触发开始的事件,像 shown 会触发开始完成以后的事件。

$('#myModal').on('show', function (e) {
    if (!data) return e.preventDefault() // stops modal from being shown
})

关于过渡效果

包含 bootstrap-transition.js 可以添加一个简单的过渡效果。如果你使用了编译后(或者最小化)的 bootstrap.js,就不用单独包含这个文件了,因为它已经包含在了 bootstrap.js 这个文件里。

使用案例

过渡效果的几个示例:

  • 对话窗中的滑动或渐变
  • 渐渐消失的选项卡
  • 渐渐消失的警示信息
  • 滚动的旋转木马

示例

对话框精简而灵活。

静态示例

页头,主体,带一些动作按钮的页脚,这里显示的就是一个对话框。

<div class="modal hide fade">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>对话框标题</h3>
  </div>
  <div class="modal-body">
    <p>这里是主体内容…</p>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn">关闭</a>
    <a href="#" class="btn btn-primary">保存修改</a>
  </div>
</div>

实时预览

点击下面按钮会通过 JavaScript 切换显示对话框。从页面上方渐变向下显示弹出对话框。

<!-- 触发显示对话框的按钮 -->
<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>

<!-- 对话框 -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">对话框标题</h3>
  </div>
  <div class="modal-body">
    <p>对话框主体内容 ...…</p>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
    <button class="btn btn-primary">保存修改</button>
  </div>
</div>

用法

通过数据属性

启动对话框并不需要写 JavaScript 代码。在控制器元素上设置一下 data-toggle="modal" ,比如像按钮,添加 data-target="#foo"href="#foo" 来针对切换特定的对话框。

<button type="button" data-toggle="modal" data-target="#myModal">启动对话框</button>

通过 JavaScript

使用一行 JavaScript 去调用 myModal ID:

$('#myModal').modal(options)

选项

数据属性或 JavaScript 都可以传递选项。如果用数据属性的话,添加一个选项名称到 data- 后面,比如像 data-backdrop=""

名称 类型 默认 描述
backdrop 布尔值 true 添加 modal-backdrop 元素(对话框显示时的透明黑色背景)。也可以为 backdrop 指定 static,这样点击对话框时就不能关闭了。
keyboard 布尔值 true 按 ESC 键关闭对话框
show 布尔值 true 初始化以后显示对话框
remote 路径 false

提供一个远程 URL,内容支使用 jQuery 的 load 方法载入,同时会注入到 .modal-body 里。如果你使用数据 API,你可能得使用 href 属性指定远程源。下面是一个使用示例:

<a data-toggle="modal" href="remote.html" data-target="#modal">请点击</a>

方法

.modal(选项)

用对话框显示内容,也会支持一下可选的选项 object

$('#myModal').modal({
  keyboard: false
})

.modal('toggle')

手工切换对话框。

$('#myModal').modal('toggle')

.modal('show')

手工打开对话框。

$('#myModal').modal('show')

.modal('hide')

手工隐藏对话框。

$('#myModal').modal('hide')

事件

Bootstrap 的对话框类里带了几个事件可以挂到对话框功能上。/p>

事件 描述
show 当调用 show 时,会立即触发这个事件。
shown 当完全显示的时候触发的事件。
hide 当调用 hide 时,会立即触发这个事件。
hidden 当完全隐藏以后触发的事件。
$('#myModal').on('hidden', function () {
  // 做点啥事 ...
})

在导航栏上的示例

ScrollSpy 插件根据滚动的位置会自动更新导航上的目标。滚动下面的内容,注意激活类的变化,另外下拉菜单子项目也同样适用。

电影

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

美剧

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

one

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

two

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

three

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats.


用法

通过数据属性

添加 scrollspy 功能最简单的方法,就是在你想使用这个功能的元素上(一般来说是 body )添加一个 data-spy="scroll" 还有 data-target=".navbar" 来选择要使用的导航。可以使用 .nav 组件。

<body data-spy="scroll" data-target=".navbar">...</body>

通过 JavaScript

通过 JavaScript 调用 scrollspy:

$('#navbar').scrollspy()
提示! 导航栏链接必须得有目标 id,比如,<a href="#home">home</a> 必须跟像 <div id="home"></div> 一起。

方法

.scrollspy('refresh')

当在页面中配合添加或移除元素时使用 scrollspy,你需要像这样来调用刷新方法:

$('[data-spy="scroll"]').each(function () {
  var $spy = $(this).scrollspy('refresh')
});

选项

可以通过数据属性和 JavaScript 来传递选项。使用数据属性, 在 data- 后面加上选项的名称, 比如 data-offset=""

名称 类型 默认 描述
偏移 number 10 Pixels to offset from top when calculating position of scroll.

事件

事件 描述
activate scrollspy 的新项目变成激活状态时会触发这个事件。

选项卡示例

快速,动态,带过滤效果,下拉菜单的选项卡功能,可以切换显示本地内容。

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.


用法

通过 JavaScript 启用可切换选项卡 ( 每个选项卡可以独立被激活显示 ):

$('#myTab a').click(function (e) {
  e.preventDefault();
  $(this).tab('show');
})

独立激活选项卡有很多种方法:

$('#myTab a[href="#profile"]').tab('show'); // 用名称选择选项卡
$('#myTab a:first').tab('show'); // 选择第一个选项卡
$('#myTab a:last').tab('show'); // 选择最后一个选项卡
$('#myTab li:eq(2) a').tab('show'); // 选择第三个选项卡 (0-indexed)

代码

启用选项卡功能不需要你写一行 JavaScript 代码,只需要添加 data-toggle="tab" 或者 data-toggle="pill" 到元素上就可以了。添加 navnav-tabs 类到选项卡 ul 上可以应用 Bootstrap 的选项卡样式。

<ul class="nav nav-tabs">
  <li><a href="#home" data-toggle="tab">首页</a></li>
  <li><a href="#profile" data-toggle="tab">档案</a></li>
  <li><a href="#messages" data-toggle="tab">信息</a></li>
  <li><a href="#settings" data-toggle="tab">设置</a></li>
</ul>

方法

$().tab

激活一个选项卡和内容容器,选项卡需要 data-target 或者 href 来定位页面中的内容。

<ul class="nav nav-tabs" id="myTab">
  <li class="active"><a href="#home">首页</a></li>
  <li><a href="#profile">档案</a></li>
  <li><a href="#messages">信息</a></li>
  <li><a href="#settings">设置</a></li>
</ul>

<div class="tab-content">
  <div class="tab-pane active" id="home">...</div>
  <div class="tab-pane" id="profile">...</div>
  <div class="tab-pane" id="messages">...</div>
  <div class="tab-pane" id="settings">...</div>
</div>

<script>
  $(function () {
    $('#myTab a:last').tab('show');
  })
</script>

事件

事件 描述
show 选项卡显示时会触发这个事件,不过在新的选项卡显示之前。使用 event.targetevent.relatedTarget 来定位激活的选项卡,还有上一个激活的选项卡(如果有)。
shown 显示选项卡之后触发的事件。使用 event.targetevent.relatedTarget 来定位激活的选项卡还有上一个激活的选项卡(如果有)。
$('a[data-toggle="tab"]').on('shown', function (e) {
  e.target // 激活的选项卡
  e.relatedTarget // 上一个选项卡
})

示例

受到 Jason Frame 写的著名 jQuery.tipsy 插件的启发。工具提示插件不见依赖图像,并使用 CSS3 动画,并且使用 data-attributes 存储本地标题。

考虑到性能的原因,你需要手工启用工具提示和 Popover。

鼠标悬停在下面的链接上,查看工具提示:

1965年4月4日生于美国纽约。父亲是电影导演Robert Downey Sr.,母亲为一名演员。五岁时他参加过多次业余表演。由于决意发展演艺事业,他便辍学加入剧团,并参加《周末夜现场》等热门电视节目的演出。自1992年在《卓别林与他的情人》中将喜剧泰斗卓别林一角演绎得绘声绘色,并荣获英国电影学院奖最佳男主角奖及奥斯卡最佳男主角提名,将其演艺事业推向高峰。1997年传出吸毒被捕的丑闻,演艺事业遭受重挫。2000年更经历了几个月的铁窗生涯,同年9月出狱,重新投身好莱坞,但不久再因吸毒二进宫,事业再遭重创。之后开始在一些电影中出演配角,并未引起多大反响。2005年开始出演的《晚安,好运》、《亲亲,撞撞》等片获得了不少好评,2007年主演大卫·芬奇《十二宫》,在其中精彩的演出备受关注。2008年更是摇身一变,成为超级英雄《钢铁侠》,同时还在本·斯蒂勒主演的《热带惊雷》中尝试搞笑角色,并凭借该片获得奥斯卡男配角提名,打了一场极为漂亮的翻身仗。接下来唐尼与杰米·福克斯合作了《独奏者》,出演盖·里奇的《大侦探福尔摩斯》,并继续主演《钢铁侠2》、《复仇者联盟》、《钢铁侠3》等超级漫画英雄大片。

四个方向

在 input 组中的工具提示

在 input 组中使用工具提示和 popovers 的时候,你需要设置 container 选项来去掉一些副作用。


用法

Trigger the tooltip via JavaScript:

$('#example').tooltip(options)

选项

可以通过数据属性和 JavaScript 来传递选项。使用数据属性, 在 data- 后面加上选项的名称, 比如 data-animation=""

名称 类型 默认 描述
animation 布尔值 true 添加一个 css 渐变效果
html 布尔值 false 在工具提示里插入 html 。如果设置为 false (假),会使用 jQuery 的 text 方式插入内容。如果你担心 XSS 攻击,请使用 text。
placement string | function 'top' 工具提示的位置 - top | bottom | left | right
selector string false 如果提供了选项器,工具提示对象会委派到指定的目标。
title string | function '' 默认的标题的值
trigger string 'hover focus' 触发工具提示的方法 - click | hover | focus | manual。你可以传递多种方法,使用空格分隔不同的方法。
delay number | object 0

显示和隐藏工具提示时的延时(毫秒),不要使用手工触发类型

如果提供了数字,延时会同时用在 显示/隐藏上

对象结构是:delay: { show: 500, hide: 100 }

container string | false false

附加工具提示到指定元素 container: 'body'

提示! 使用数据属性你可以单独为每个工具提示设置选项。

代码

<a href="#" data-toggle="tooltip" title="first tooltip">hover over me</a>

方法

$().tooltip(options)

附加选项处理元素的工具提示

.tooltip('show')

显示元素的工具提示。

$('#element').tooltip('show')

.tooltip('hide')

隐藏元素的工具提示。

$('#element').tooltip('hide')

.tooltip('toggle')

切换元素的工具提示。

$('#element').tooltip('toggle')

.tooltip('destroy')

隐藏和破坏元素的工具提示

$('#element').tooltip('destroy')

示例

用一个简单的内容覆盖层为元素显示二级内容,在 iPad 上你能看到类似的效果。悬停在按钮上触发显示 popover。 需要包含 工具提示插件。

Popover 的静态展示

有四个对齐选项:top, right, bottom, left。

Popover 顶部

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

Popover 右边

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

Popover 底部

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

Popover 左边

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

并没有作为 Popover 的代码,里面的内容都是由 JavaScript 还有带 data 属性的内容生成的。

演示

四个方向


用法

通过 JavaScript 启用 popover:

$('#example').popover(选项)

选项

可以通过数据属性和 JavaScript 来传递选项。使用数据属性, 在 data- 后面加上选项的名称, 比如 data-animation="".

名称 类型 默认 描述
animation 布尔值 true 添加一个 css 渐变效果
html 布尔值 false 在 popover 里插入 html 。如果设置为 false (假),会使用 jQuery 的 text 方式插入内容。如果你担心 XSS 攻击,请使用 text。
placement string | function 'right' popover 的位置 - top | bottom | left | right
selector string false 如果提供了选项器,工具提示对象会委派到指定的目标。
trigger string 'click' 触发 popover 的方法 - click | hover | focus | manual。
title string | function '' 默认的标题的值
content string | function '' 默认的内容值
delay number | object 0

显示和隐藏 popover 时的延时(毫秒),不要使用手工触发类型

如果提供了数字,延时会同时用在 显示/隐藏上

对象结构是:delay: { show: 500, hide: 100 }

container string | false false

附加 popover 到指定元素 container: 'body'

提示! 使用数据属性你可以单独为每个 popover 设置选项。

代码

考虑到性能的原因,你需要手工启用工具提示和 Popover。

方法

$().popover(options)

为选择元素初始化 popover

.popover('show')

显示元素 popover 。

$('#element').popover('show')

.popover('hide')

隐藏元素 popover 。

$('#element').popover('hide')

.popover('toggle')

切换元素 popover 。

$('#element').popover('toggle')

.popover('destroy')

隐藏和破坏元素的 popover 。

$('#element').popover('destroy')

警示信息示例

使用这个插件可以为所有警示信息添加关闭的功能。

注意! Best check yo self, you're not looking too good.

发生错误了!

Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.

执行 确定


用法

通过 JavaScript 启用可关闭的警示信息:

$(".alert").alert()

代码

在关闭按钮上添加 data-dismiss="alert",会自动添加关闭功能。

<a class="close" data-dismiss="alert" href="#">&times;</a>

方法

$().alert()

为警示信息添加关闭功能。在关闭的时候使用动画,可以添加 .fade.in 类。

.alert('close')

关闭警示。

$(".alert").alert('close')

事件

Bootstrap 的警示类带了几个事件。

事件 描述
close 调用 close 时会触发这个事件。
closed 关闭完成以后触发的事件。
$('#my-alert').bind('closed', function () {
  // 这里可以做点事 ...
})

使用示例

做更多关于按钮的事。控制按钮状态或者创建按钮组。.

状态

添加 data-loading-text="加载中..." 可以在按钮中使用加载状态。

<button type="button" class="btn btn-primary" data-loading-text="加载中...">加载状态</button>

单一切换

添加 data-toggle="button" 在单一按钮上来回切换。

<button type="button" class="btn btn-primary" data-toggle="button">单一切换</button>

复选框

添加 data-toggle="buttons-checkbox" 可以在 btn-group 上使用复选框类型的切换。

<div class="btn-group" data-toggle="buttons-checkbox">
  <button type="button" class="btn btn-primary">左对齐</button>
  <button type="button" class="btn btn-primary">居中</button>
  <button type="button" class="btn btn-primary">右对齐</button>
</div>

单选按钮

添加 data-toggle="buttons-radio" 可以在 btn-group 上使用单选按钮类型的切换。

<div class="btn-group" data-toggle="buttons-radio">
  <button type="button" class="btn btn-primary">左对齐</button>
  <button type="button" class="btn btn-primary">居中</button>
  <button type="button" class="btn btn-primary">右对齐</button>
</div>

用法

通过 JavaScript 启用按钮:

$('.nav-tabs').button()

代码

查看下面的示例代码。

选项

方法

$().button('toggle')

切换推送状态,给激活的按钮特殊样式。

提示! 你可以使用 data-toggle 属性启用自动切换。
<button type="button" class="btn" data-toggle="button" >…</button>

$().button('loading')

设置按钮的状态为加载中,禁用按钮并使用加载文字替换按钮文字,加载文字可以使用 data-loading-text 这个数据属性定义。

<button type="button" class="btn" data-loading-text="加载中..." >...</button>
提示! Firefox 存在跨页面加载禁用状态。 解决这个问题可以使用 autocomplete="off".

$().button('reset')

重置按钮状态 - 用原始按钮文字替换。

$().button(string)

重置按钮状态 - 使用任何定义的文字显示状态。

<button type="button" class="btn" data-complete-text="完成啦!" >...</button>
<script>
  $('.btn').button('complete')
</script>

关于

折叠显示内容。

* 需要用到过渡插件。

手风琴示例

Using the collapse plugin, we built a simple accordion style widget:

Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
<div class="accordion" id="accordion2">
  <div class="accordion-group">
    <div class="accordion-heading">
      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
        可折叠组项目 #1
      </a>
    </div>
    <div id="collapseOne" class="accordion-body collapse in">
      <div class="accordion-inner">
        Anim pariatur cliche...
      </div>
    </div>
  </div>
  <div class="accordion-group">
    <div class="accordion-heading">
      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
        可折叠组项目 #2
      </a>
    </div>
    <div id="collapseTwo" class="accordion-body collapse">
      <div class="accordion-inner">
        Anim pariatur cliche...
      </div>
    </div>
  </div>
</div>
...

你也可以不用使用手风琴代码,可以使用按钮切换。

<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
  可折叠
</button>

<div id="demo" class="collapse in"> … </div>

用法

通过数据属性

添加 data-toggle="collapse"data-target 到元素上可以自动分配可折叠元素的控制。 data-target 属性可以接受 CSS 选择器来应用折叠。确定已经添加了 collapse 类到可折叠元素上。如果你想它默认是打开的,可以添加一个 in 类。

在可折叠控制上添加像手风琴样式的组合,你可以添加数据属性 data-parent="#selector",具体用法可以参考上面的演示。

通过 JavaScript

手工启用的方法:

$(".collapse").collapse()

选项

可以通过数据属性和 JavaScript 来传递选项。使用数据属性, 在 data- 后面加上选项的名称, 比如 data-parent=""

名称 类型 默认 描述
parent 选择器 false 使用后,在显示折叠内容的时候,会自动关闭选择器下面其它所有的可折叠内容,有点像手风琴。
toggle 布尔值 true 切换折叠元素调用

方法

.collapse(options)

用折叠形式展示内容。授受一个可选选项 object

$('#myCollapsible').collapse({
  toggle: false
})

.collapse('toggle')

切换可折叠元素的显示或隐藏。

.collapse('show')

显示可折叠元素。

.collapse('hide')

隐藏可折叠元素。

事件

Bootstrap 的折叠类有几个事件可以去挂函数。

事件 描述
show 调用 show (显示)时触发的事件。
shown 完全显示折叠元素的时候会触发的事件。
hide 调用 hide (隐藏) 时触发的事件。
hidden 完全隐藏折叠元素的时候会触发的事件。
$('#myCollapsible').on('hidden', function () {
  // 在这里加上你要做的事儿 ...
})

预输入示例

文本框里的事先输入功能插件。

<input type="text" data-provide="typeahead">

设置 autocomplete="off" 来防止浏览器默认的自动完成显示在 Bootstrap 的事先输入之上。


用法

通过数据属性

Add data attributes to register an element with typeahead functionality as shown in the example above.

通过 JavaScript

手工调用事先输入:

$('.typeahead').typeahead()

选项

可以通过数据属性和 JavaScript 来传递选项。使用数据属性, 在 data- 后面加上选项的名称, 比如 data-source=""

名称 类型 默认 描述
source 数组, 函数 [ ] 要查询的数据源。可以是一个数组或是函数。函数传递两个参数, query 值在 input 字段里,还有 process 回调。函数可以用于直接同步调用数据或者通过 process 异步调用。
items 数字 8 在下拉菜单中显示的最大项目数。
minLength 数字 1 触发自动完成建议的最小字符数。
matcher 函数 case insensitive 确定查询匹配项目的方法。授受单独参数, 测试查询 item,使用this.query 访问当前查询,如果查询匹配则返回一个为 true 的布尔值。
sorter 函数 exact match,
case sensitive,
case insensitive
自动完成结果的排序方法。授受单独参数 items,还有事先输入的范围,使用 this.query 引用当前查询。
updater 函数 返回选择的项目 返回选择的项目的方法。授受单独参数 item ,还有事先输入的范围。
highlighter 函数 高亮所有默认匹配 高亮自动完成结果的方法。授受单独参数 item ,还有事先输入的范围。应该返回 html。

方法

.typeahead(options)

初始化 input 预输入。

示例

左边显示的这个子导航菜单就是一个附件(affix)插件。


用法

通过数据属性

在任何元素上添加附件功能,只需要添加一个 data-spy="affix" 到元素上。然后使用偏移来定义在什么时候切换固定元素的开或关。

<div data-spy="affix" data-offset-top="200">...</div>
提示! 你需要管理固定的元素的位置和它的真属父辈的行为,位置由 affixaffix-top, 还有 affix-bottom 控制。记住要检查父辈潜在的折叠,因为当附件进来时它会从页面中移除内容。

通过 JavaScript

使用 JavaScript 调用 affix 插件:

$('#navbar').affix()

选项

可以通过数据属性和 JavaScript 来传递选项。使用数据属性, 在 data- 后面加上选项的名称, as in data-offset-top="200".

名称 类型 默认 描述
偏移 number | function | object 10 在计算位置时从屏幕中偏移的像素数。如果提供了一个单独的数字,偏移会应用在顶部和左边两个方向。单一方向或多个不同偏移,可以使用一个对象 offset: { x: 10 },使用函数可以去动态计算偏移(适用于响应式设计)。