说明 #

YFjs 组件库融合了丰富的第三方组件,并根据实际使用情况对这些组件进行了一些调整及部分功能性的增强、Bug修复等。

该文档页面下的所有组件在使用时都需要手动引入。

在阅览文档时,组件库会提示配置项或参数是 PlainObject 类型。那么:

什么是 PlainObject ?

是一种简单(纯粹)的对象,是通过 {}new ObjectObject.create 创建的对象。比如:{a: 0, b: "c"} 是 PlainObject,[]document 不是 PlainObject。组件库内说某个配置项或参数是 PlainObject 类型,意即类似于 {} 的 JSON 对象。下同,不再赘述。

Bootstrap风格组件 ( 16 ) #

以下 Bootstrap 的原有组件基于 v3.3.4 版本进行了调整,有的添加了更多的功能,所以不再与 Bootstrap 中的内容保持版本同步。其他第三方 Bootstrap 风格的组件会注明当前采用的版本,并尽量保持内容的同步更新。

模态框 bs/modal #

ID: bs/modal

Bootstrap 3 的模态框插件 基础上进行了功能增强,支持自动生成模态框元素并弹出;支持非模态设置;支援加载远程内容;支持警告框(alert)、询问框(confirm)、加载框(loading)、提示框(info)等多种形式的模态框。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入模态框插件依赖。

define(['bs/modal'], function(Modal) {
    // Now you can use Modal plugin via Modal variable.
});

当然,也可以直接引入使用。

require(['bs/modal'], function(Modal) {
    // Now you can also use Modal plugin via Modal variable.
});

示例 #

模态框示例效果可以前往 模态框示例 页面查看。

通用框 #

直接使用 Modal.show() 方法即可快速弹出一个模态框。

Modal.show({
    title: 'Dialog Title',
    message: 'Dialog Content',
    onshown: function(dialog) {
        // init dialog content
    },
    buttons: [{
        label: "取消",
        action: function(dialog) {
            dialog.close();
        }
    }, {
        label: "确定",
        cssClass: "btn-primary",
        action: function(dialog) {
            // do something
            dialog.close();
        }
    }]
});

加载远程内容 #

使用 remote 配置项可以加载远程内容。

Modal.show({
    remote: 'remote.html'
});

如果在请求远程内容需要传递参数等一些额外的内容,可以像使用 ajax 那样设置 remote 配置项。

Modal.show({
    remote: {
        url: 'remote.html',
        data: {param: '111'}
    }
});

另外,remote 配置项还支持设置为 PromiseDeferred 对象。

Modal.show({
    remote: function(dialog) {
        var def = $.Deferred();
        setTimeout(function() {
            def.resolve("Dialog content from promise.");
        }, 300);
        return def.promise(); // OR return def;
    }
});

配置项 #

通用形式的模态框可以使用以下配置项:

type #

String

模态框类型。可选为

另可设为任意字符串,自定义样式类型。

title #

String

模态框标题。

message #

String | Function

模态框内容。

remote #

PlainObject | Promise | Function

模态框远程内容。可为Ajax配置项、Promise对象或返回相应类型值的方法。

nl2br #

Boolean

是否将内容中的换行符自动转化为换行标签 <br>。默认为 false

buttons #

Array[Object]

模态框按钮设置。数组类型,可设置任意多的按钮。每项可设置配置项如下:

data #

Object

模态框绑定数据。可以通过模态框对象的 .getData() 方法获取指定数据(未传入参数则返回所有数据)。

onshow #

Function

模态框弹出之前(尚未执行切入动画)触发回调。传入模态框对象参数。

onshown #

Function

模态框弹出之后(已执行切入动画且内容已显示)触发回调。传入模态框对象参数。

onhide #

Function

模态框关闭之前(尚未执行切出动画)触发回调。传入模态框对象参数。

onhidden #

Function

模态框消失之后(已执行完切出动画且元素已从文档中移除)触发回调。传入模态框对象参数。

onloaded #

Function

存在 remote 配置项时生效,等同于 onshown 配置项。传入模态框对象参数。

backdrop #

Boolean | Array

模态效果。设为 false 及其等效值时不显示模态效果。另可设为数组,类似于[模态背景色, 模态背景透明度],如 ['#fff', 0.5]。默认为 'static'(显示默认模态效果)。

position #

String | Array

模态框初始位置。可设为字符串 "左位置 上位置" 或数组 [左位置, 上位置],规则如下:

size #

Number | String | PlainObject

模态框大小。若为数字(字符串)或px、(r)em、%结尾的字符串,将直接作为弹出框宽度进行设置;否则,将作为模态框的 class 样式。另支持设为对象,允许配置项为:

cssClass #

String

模态框的 class 样式。

closable #

Boolean

是否显示模态框的"关闭"图标按钮并允许自动关闭模态框。默认为 true

closeByBackdrop #

Boolean

是否允许点击模态效果背景时关闭弹出框(存在模态效果时生效),closable 设为 true 时生效。backdrop 设为数组值或 "static" 时默认为 false,

closeByKeyboard #

Boolean

是否响应键盘的 Esc 键关闭模态框,closable 设为 true 时生效。默认为 true

draggable #

Function

是否允许拖拽。默认为 false(不允许拖拽)。

警告框 #

使用 Modal.alert() 方法可以弹出一个警告形式的模态框。

Modal.alert('Hi Apple!', function() {
    // after closed.
});

另外,可以使用更多的配置项来丰富警告模态框。

Modal.alert({
    title: 'WARNING',
    message: 'Warning! No Banana!',
    icon: false,
    type: Modal.TYPE_WARNING,
    closable: true,
    draggable: true,
    buttonLabel: 'Roar! Why!',
    callback: function(result) {
        alert('Result is: ' + result);
    }
});

配置项 #

警告形式的模态框可以使用以下配置项:

type #

同通用框的 type 配置项。

警告模态框类型。默认为 Modal.TYPE_PRIMARY

title #

同通用框的 title 配置项。

警告模态框标题。默认为 '警告提示'

message #

同通用框的 message 配置项。

警告模态框内容。

icon #

Boolean | String

警告模态框内容图标。布尔或字符串类型。设为 false 时不显示图标,设为字符串时,将作为图标的额外 class 样式,可以通过 .modal-icon-alert.xxx 选择器更改图标样式。默认为 true

closable #

同通用框的 closable 配置项。

是否显示警告模态框的"关闭"图标按钮。默认为 false

draggable #

同通用框的 draggable 配置项。

是否允许拖拽。默认为 false (不允许拖拽)。

buttonLabel #

String

警告模态框按钮文本内容。默认为 '确定'

callback #

Function

警告模态框关闭后的回调方法。如果是通过点击 "确定" 按钮关闭了警告框,传入的参数 result 为 true,否则,为 false。

询问框 #

使用 Modal.confirm() 方法可以弹出一个询问形式的模态框。

Modal.confirm('Hi Apple, are you sure?', function(bsure) {
    if (bsure) {
        // 点击了"确定"按钮
    } else {
        // 点击了"取消"按钮
    }
});

另外,可以使用更多的配置项来丰富询问模态框。

Modal.confirm({
    title: 'WARNING',
    message: 'Warning! Drop your banana?',
    type: Modal.TYPE_WARNING,
    closable: false,
    draggable: true,
    btnCancelLabel: 'Do not drop it!',
    btnOKLabel: 'Drop it!',
    btnOKClass: 'btn-warning',
    callback: function(bsure) {
        if (bsure) {
            // 点击了"确定"按钮
        } else {
            // 点击了"取消"按钮
        }
    }
});

配置项 #

询问形式的模态框可以使用以下配置项:

type #

同通用框的 type 配置项。

询问模态框类型。默认为 Modal.TYPE_PRIMARY

title #

同通用框的 title 配置项。

询问模态框标题。默认为 '确认提示'

message #

同通用框的 message 配置项。

询问模态框内容。

icon #

Boolean | String

询问模态框内容图标。布尔或字符串类型。设为 false 时不显示图标,设为字符串时,将作为图标的额外 class 样式,可以通过 .modal-icon-confirm.xxx 选择器更改图标样式。默认为 true

closable #

同通用框的 closable 配置项。

是否显示询问模态框的"关闭"图标按钮。默认为 true

draggable #

同通用框的 draggable 配置项。

是否允许拖拽。默认为 false (不允许拖拽)。

btnCancelLabel #

String

询问模态框"取消"按钮文本内容。默认为 '取消'

btnOKLabel #

String

询问模态框"确定"按钮文本内容。默认为 '确定'

btnOKClass #

String

询问模态框"确定"按钮 class 样式。默认为 null

callback #

Function

询问模态框关闭后的回调方法。如果是通过点击 "确定" 按钮关闭了询问框,传入的参数 bsure 为 true,否则,为 false。

加载框 #

使用 Modal.loading() 方法可以弹出一个加载效果的模态框。

Modal.loading('5秒后手动关闭', function() {
    // Loading done.
});
// 手动关闭加载效果模态框
setTimeout(function() {
    Modal.loading('remove');
}, 5000);

也可以使用传入配置项的方式。

Modal.loading({
    message: '5秒后手动关闭',
    delay: 80,
    onhidden: function() {
        // Loading done.
    }
});
// 手动关闭加载效果模态框
setTimeout(function() {
    Modal.loading('remove');
}, 5000);

配置项 #

加载效果的模态框可以使用以下配置项:

message #

同通用框的 message 配置项。

加载效果模态框的文本内容。默认为 null

size #

Number | String

加载效果图标的大小。默认为 32(px)

minin #

Number

加载效果模态框最小显示时间。若销毁时刻距显示时刻的时间间隔小于这个值,则自动延时至最小时间间隔。默认为 300(ms)

loader #

String | PlainObject

加载效果设置。若为图像地址,则使用指定图像作为加载效果;为其他有效值时,作为加载效果容器的 class 样式。默认为 null,使用默认的 loader 插件。

beginFrame #

Number

为默认加载效果时生效,等同于 loader 插件的 data-frame 属性配置项。默认为 1

delay #

Number

为默认加载效果时生效,等同于 loader 插件的 data-delay 属性配置项。默认为 150

onshow #

同通用框的 onshow 配置项。

加载效果模态框显示之前调用回调。传入模态框对象参数。

onhidden #

同通用框的 onhidden 配置项。

加载效果模态框关闭之后调用回调。传入模态框对象参数。

过程框 #

使用 Modal.processing() 方法可以弹出一个表示处理过程的模态框。

var processor = Modal.processing('正在处理...');

处理过程的模态框需要自行手动关闭,并且可以根据处理结果的不同调用不同效果形式的关闭方法。

// 显示警告处理结果(延迟模拟处理过程)
setTimeout(function() {
    processor.warning('处理进程尚未开启.');
}, 5000);
// 显示失败处理结果(延迟模拟处理过程)
setTimeout(function() {
    processor.error('处理失败!');
}, 5000);
// 显示成功处理结果(延迟模拟处理过程)
setTimeout(function() {
    processor.success('处理成功!');
}, 5000);

配置项 #

过程形式的模态框可以使用以下配置项:

message #

同通用框的 message 配置项。

过程模态框的内容。默认为 'Processing...'

nl2br #

同通用框的 nl2br 配置项。

是否将内容中的换行符自动转化为换行标签 <br>。默认为 false

size #

同通用框的 size 配置项。

默认为:{width: 'auto', minWidth: '20em', maxWidth: '40em'}

backdrop #

同通用框的 backdrop 配置项。

默认为 false

position #

同通用框的 position 配置项。

默认为 'right top',

timeout #

Number

过程模态框触发结束方法后的显示停留时间。单位 ms。可选配置项为:

icons #

PlainObject

过程模态框内图标设置。可选配置项为:

提示框 #

提示形式的模态框有四种形式:信息提示框、警告提示框、错误提示框、成功提示框。四种形式的提示框除了调用方法名不同外,具有相同的参数和方法。

信息提示框 #

使用 Modal.info() 方法可以弹出信息提示框。

Modal.info('自定义提示信息');

可以传入回调参数在提示框关闭后做后续处理。

Modal.info('自定义提示信息', function() {
    // info modal closed!
});

可以使用传入配置项的方式为提示框添加更多功能。

Modal.info({
    message: '自定义提示信息',
    position: 'right 50',
    onhidden: function() {
        // info modal closed!
    }
});

警告提示框 #

使用 Modal.warning() 方法可以弹出警告提示框。

Modal.warning('自定义警告信息');

错误提示框 #

使用 Modal.error() 方法可以弹出错误提示框。

Modal.error('自定义错误信息');

成功提示框 #

使用 Modal.success() 方法可以弹出成功提示框。

Modal.success('自定义成功信息');

配置项 #

提示形式的模态框可以使用以下配置项:

message #

同通用框的 message 配置项。

提示框的文本内容。信息提示框默认为 'Info.';警告提示框默认为 'Warning!';错误提示框默认为 'Error!';成功提示框默认为 'Success!'

nl2br #

同通用框的 nl2br 配置项。

是否将内容中的换行符自动转化为换行标签 <br>。默认为 false

size #

同通用框的 size 配置项。

默认为:{width: 'auto', minWidth: '20em', maxWidth: '40em'}

backdrop #

同通用框的 backdrop 配置项。

默认为 false

position #

同通用框的 position 配置项。

默认为 'right top',

timeout #

Number

提示框的显示停留时间。单位 ms。默认为 3500

icon #

String

提示框内图标设置。图标容器的 class 样式。信息提示框默认为 'fa fa-info-circle';警告提示框默认为 'fa fa-exclamation-triangle';错误提示框默认为 'fa fa-bug';成功提示框默认为 'fa fa-check-circle'

实例方法 #

模态框的配置项方法都会传入模态框的对象实例参数,另 show()alert() 等方法也会返回模态框对象实例。模态框对象实例可以使用以下方法操作模态框:

getGlobalOpenedDialogs() #

获取所有正在显示的模态框实例。

getModal() #

获取模态框的最上层容器元素的 jQuery 对象。

getModalDialog() #

获取模态框外层容器元素的 jQuery 对象。

getModalContent() #

获取模态框内容容器元素的 jQuery 对象。

getModalHeader() #

获取模态框头部容器元素的 jQuery 对象。

getModalBody() #

获取模态框主体容器元素的 jQuery 对象。

getModalFooter() #

获取模态框底部容器元素的 jQuery 对象。

setData() #

设置模态框实例的绑定数据。

可依次传入以下参数:

  1. key:必选。String 类型。

  2. value:必选。Object 类型。

getData() #

获取模态框实例的绑定数据。

可依次传入以下参数:

  1. key:必选。String 类型。

getId() #

获取模态框实例的 ID。

getType() #

获取模态框的类型。

setType() #

设置模态框的类型。

可依次传入以下参数:

  1. type:必选。同配置项 type

testType() #

检测模态框的类型是否是指定类型。

可依次传入以下参数:

  1. type:String 类型。支持以其开头的模糊匹配。

getSize() #

获取模态框的尺寸。

setSize() #

设置模态框的尺寸。

可依次传入以下参数:

  1. size:必选。同配置项 size

  2. adjustPosition:可选。Boolean 类型,是否自动调整模态框位置。

getCssClass() #

获取模态框的样式 class。

setCssClass() #

设置模态框的样式 class。

可依次传入以下参数:

  1. cssClass:必选。同配置项 cssClass

getTitle() #

获取模态框的标题。

setTitle() #

设置模态框的标题。

可依次传入以下参数:

  1. title:必选。同配置项 title

getMessage() #

获取模态框内容字符串。

setMessage() #

设置模态框内容。

可依次传入以下参数:

  1. message:必选。同配置项 message

getPosition() #

获取模态框的当前位置。数组,第 0 项为左位置,第 1 项为上位置。

setPosition() #

设置模态框位置。

可依次传入以下参数:

  1. leftPos:可选。可设为 'left''center''right'。另可设为百分比字符串值(如"15%")、px/em单位字符串值(如"200px"或"200em")、数字(如200,单位默认为px)。

  2. topPos:可选。可设为 'top''center''bottom'。另可设为百分比字符串值(如"15%")、px/em单位字符串值(如"200px"或"200em")、数字(如200,单位默认为px)。

不传入参数时根据初始配置重设位置。

isClosable() #

判断模态框是否可响应关闭事件进行关闭。

setClosable() #

设置模态框是否可响应关闭事件进行关闭。

可依次传入以下参数:

  1. closable: Boolean 类型。

canCloseByBackdrop() #

判断模态框是否可响应点击遮罩层事件进行关闭。

setCloseByBackdrop() #

设置模态框是否可响应点击遮罩层事件进行关闭。

可依次传入以下参数:

  1. closeByBackdrop: Boolean 类型。

canCloseByKeyboard() #

判断模态框是否可响应按下键盘的 Esc 键事件进行关闭。

setCloseByBackdrop() #

设置模态框是否可响应按下键盘的 Esc 键事件进行关闭。

可依次传入以下参数:

  1. closeByKeyboard: Boolean 类型。

isAnimate() #

判断模态框打开时是否显示动画效果。

setAnimate() #

设置模态框打开时是否显示动画效果。

可依次传入以下参数:

  1. animate: Boolean 类型。

getSpinicon() #

获取模态框按钮上的加载效果样式 class。

setSpinicon() #

设置模态框按钮上的加载效果样式 class。

可依次传入以下参数:

  1. spinicon: String 类型。

getButtons() #

获取模态框底部按钮的配置项数组。

setButtons() #

设置模态框底部的按钮。

可依次传入以下参数:

  1. buttons: 必选。同配置项 buttons

getButton() #

获取模态框底部按钮的 jQuery 对象。

可依次传入以下参数:

  1. id: String 类型。按钮的ID。

getButtonSize() #

获取模态框底部按钮的尺寸。

enableButtons() #

设置模态框底部按钮是否响应点击/热键事件

可依次传入以下参数:

  1. enable: Boolean 类型。

enableButton() #

设置模态框内部(包含底部)指定按钮响应点击/热键事件。

可依次传入以下参数:

  1. selector: 元素选择器。如 id 为 '#id',class 为 '.className' 等。

disableButton() #

设置模态框内部(包含底部)指定按钮不响应点击/热键事件。

可依次传入以下参数:

  1. selector: 元素选择器。如 id 为 '#id',class 为 '.className' 等。

onShow() #

设置模态框 onshow 事件回调。

可依次传入以下参数:

  1. onshow: 同配置项 onshow

onShown() #

设置模态框 onshown 事件回调。

可依次传入以下参数:

  1. onshown: 同配置项 onshown

onHide() #

设置模态框 onhide 事件回调。

可依次传入以下参数:

  1. onhide: 同配置项 onhide

onHidden() #

设置模态框 onhidden 事件回调。

可依次传入以下参数:

  1. onhidden: 同配置项 onhidden

isRealized() #

判断模态框是否已实例化完毕。

isOpened() #

判断模态框是否正在显示。

close() #

关闭模态框。

dispose() #

销毁模态框,不响应 onhide 和 onhidden 回调。

静态方法 #

.configDefaultOptions() #

设置模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.closeAll() #

关闭所有模态框。

.show() #

打开一个通用模态框

.alert() #

打开一个警告模态框。

.alert.configDefaultOptions() #

设置警告模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.confirm() #

打开一个询问模态框。

.confirm.configDefaultOptions() #

设置询问模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.loading() #

打开一个加载效果模态框。

.loading.configDefaultOptions() #

设置加载效果模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.processing() #

打开一个过程模态框。

.processing.configDefaultOptions() #

设置过程模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.info() #

打开一个信息提示模态框。

.info.configDefaultOptions() #

设置信息提示模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.warning() #

打开一个警告提示模态框。

.warning.configDefaultOptions() #

设置警告提示模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.error() #

打开一个错误提示模态框。

.error.configDefaultOptions() #

设置错误提示模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

.success() #

打开一个成功提示模态框。

.success.configDefaultOptions() #

设置成功提示模态框全局配置项。

可依次传入以下参数:

  1. options: PlainObject 类型。参考 配置项

标签页 bs/tab #

ID: bs/tab

Bootstrap 3 的标签页插件

扩展标签页导航

该插件件扩展了 标签页导航 组件功能,添加了动态切换标签页功能。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入标签页插件依赖。

define(['bs/tab'], function() {
    // Now you can use Tab plugin via .tab() method.
});

当然,也可以直接引入使用。

require(['bs/tab'], function() {
    // Now you can also use Tab plugin via .tab() method.
});

示例 #

示例效果可以前往 标签页示例 页面查看。

用法 #

通过 JavaScript 激活标签页(每个标签页都需要单独激活):

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

可以通过以下几种方式激活指定的标签页:

$('#myTabs a[href="#profile"]').tab('show') // Select tab by name
$('#myTabs a:first').tab('show') // Select first tab
$('#myTabs a:last').tab('show') // Select last tab
$('#myTabs li:eq(2) a').tab('show') // Select third tab (0-indexed)

标记 #

另外,也可以通过为元素添加属性标记(data-toggle="tab"data-toggle="pill")的方式在不使用 JavaScript 的情况下激活标签页导航。

<div>
  <!-- Nav tabs -->
  <ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active">
      <a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a>
    </li>
    <li role="presentation">
      <a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a>
    </li>
    <li role="presentation">
      <a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a>
    </li>
    <li role="presentation">
      <a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a>
    </li>
  </ul>
  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane active" id="home">...</div>
    <div role="tabpanel" class="tab-pane" id="profile">...</div>
    <div role="tabpanel" class="tab-pane" id="messages">...</div>
    <div role="tabpanel" class="tab-pane" id="settings">...</div>
  </div>
</div>

淡入效果 #

如果想让每一个标签页内容显示淡入的动画效果,需要为每一个标签页内容容器 .tab-pane 添加 class 样式 .fade。默认显示的标签页内容的容器层需要添加 class 样式 .in 以显示内容。

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

方法 #

$().tab #

激活一个标签页元素和内容容器。标签页元素必须至少拥有属性 data-targethref 用以关联 DOM 中的一个内容容器。在上面的例子中,所有的标签页元素是含有属性 data-toggle="tab"<a> 元素。

.tab('show') #

选择指定的标签页并显示其关联的内容容器。其他标签页以及之前选择的标签页都将取消选择并且它们关联的内容容器都将自动隐藏。在当前内容容器真正显示之出来前返回(即在事件 shown.bs.tab 发生之前)。

$('#someTab').tab('show')

事件 #

显示一个标签页时,以下事件会按顺序依次触发:

  1. hide.bs.tab (在当前已激活的标签页元素上触发)
  2. show.bs.tab (在将要显示的标签页元素上触发)
  3. hidden.bs.tab (在上一个激活的标签页元素上触发,即同触发 hide.bs.tab 事件的元素)
  4. shown.bs.tab (在新激活且刚显示出来内容的标签页元素上触发,即同触发 show.bs.tab 事件的元素)

如果开始没有标签页被激活选中,事件 hide.bs.tabhidden.bs.tab 不会触发。

事件类型 描述
show.bs.tab 该事件在显示标签页,但新标签页内容还没有显示出来时触发。可以使用 event.targetevent.relatedTarget 分别获取新激活的标签页元素和上一个激活的标签页元素(如果存在)。
shown.bs.tab 该事件在显示标签页且新标签页内容已经显示出来时触发。可以使用 event.targetevent.relatedTarget 分别获取新激活的标签页元素和上一个激活的标签页元素(如果存在)。
hide.bs.tab 该事件在将要显示新的标签页(且当前已显示的标签页内容隐藏之前)触发。可以使用 event.targetevent.relatedTarget 分别获取当前正激活的标签页元素和很快将要激活的新标签页元素。
hidden.bs.tab 该事件在新激活标签页内容已显示(且上一个激活的标签页内容已隐藏)时触发。可以使用 event.targetevent.relatedTarget 分别获取上一个激活的标签页元素和新激活的标签页元素。
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  e.target // newly activated tab
  e.relatedTarget // previous active tab
})

工具提示 bs/tooltip #

ID: bs/tooltip

Bootstrap 3 的工具提示插件

为一个元素添加工具提示,覆盖 title 属性效果。

工具提示的内容长度是零的话将不会被显示出来。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入工具提示插件依赖。

define(['bs/tooltip'], function() {
    // Now you can use Tooltip plugin via .tooltip() method.
});

当然,也可以直接引入使用。

require(['bs/tooltip'], function() {
    // Now you can also use Tooltip plugin via .tooltip() method.
});

示例 #

示例效果可以前往 工具提示示例 页面查看。

用法 #

工具提示插件根据指定的标记自动生成提示内容,并在触发事件发生后显示在默认提示位置。

通过 JavaScript 触发工具提示:

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

标记 #

在希望显示工具提示的元素上添加属性 data-toggletitle。插件根据标记自动生成提示是相当简单的,有时它也需要一个位置设置(默认是 top)。

<!-- HTML to write -->
<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>

<!-- Generated markup by the plugin -->
<div class="tooltip top" role="tooltip">
  <div class="tooltip-arrow"></div>
  <div class="tooltip-inner">
    Some tooltip text!
  </div>
</div>

多行的链接

有时会在一个有多行内容的超链接上添加工具提示,这时插件默认显示位置是在水平和垂直方向上居中。可以通过为该链接添加样式 white-space: nowrap; 避免这种情况。

在按钮组、输入框组、表格中使用工具提示需要额外的设置

当在一个按钮组(.btn-group)或一个输入框组(.input-group), 或一个表格元素中(<td>, <th>, <tr>, <thead>, <tbody>, <tfoot>)使用工具提示时,需要将容器设为 'body',即 container: 'body',为了避免影响周围元素事件、样式等的匹配效果。

不要尝试在隐藏元素上显示工具提示

对一个隐藏的元素使用 $(...).tooltip('show') 显示工具提示会导致提示位置显示不正确。

使工具提示在键盘和用户辅助技术下可用

为了让用户可以通过键盘和一些特殊辅助技术查看工具提示,需要为链接、表单控件、或其他任意键盘可以聚焦的元素上添加属性 tabindex="0"

禁用状态的元素上显示工具提示需要添加一个包裹层

在一个拥有禁用状态(含有属性 disabled 或 样式 .disabled)的元素上显示工具提示时,需要将当前元素放在一个容器层 <div> 之内,并在当前容器层之上使用工具提示。

配置项 #

可以通过 data 属性或 JavaScript 传递配置项参数。对于 data 属性,需要将配置项参数名附着到 data- 后面,例如 data-animation=""

名称 类型 默认值 描述
animation boolean true 是否在工具提示元素上添加样式 fade 以显示淡出的 CSS 动画效果
container string | false false

将工具提示元素添加在一个指定元素容器之内。比如: container: 'body'。这个配置项可以有效避免影响周围元素的事件、样式匹配等情况。

delay number | object 0

显示和隐藏工具提示的延迟时间(毫秒)—— 触发类型为 manual 时不会生效

如果设置成数字类型,将同时对隐藏/显示效果生效

可以设置成对象类型: delay: { "show": 500, "hide": 100 }

html boolean false 是否允许内容含有 HTML 标签。如果设置为 false,将使用 jQuery 的 text 方法插入内容。使用文本内容可过滤掉 XSS 攻击。
placement string | function 'top'

设置工具提示框的位置,可选为 top | bottom | left | right | auto。
当设置含有 "auto" 时,工具提示框将自动适应位置。例如,如果设为 "auto left",工具提示框将尽可能地显示在左侧,否则,会显示在右侧。

当设为 function 时,会依次传入当前工具提示框的 DOM 对象参数和触发工具提示的 DOM 对象参数,方法的 this 上下文指针指向当前工具提示实例对象。

selector string false 如果设置了 selector,工具提示对象将关联到 selector 指定的对象上。实际应用中, 这个配置项会经常应用到为一个动态添加的 HTML 元素添加工具提示功能。可查阅 这个问题一个实际案例
template string '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'

创建工具提示框的外层容器。

工具提示的 title 将自动加入到 .tooltip-inner 中。

.tooltip-arrow 将变成工具提示的箭头。

最外层的容器元素需要具有样式 class .tooltip

title string | function ''

如果未设置有效值,会默认使用 title 属性值。

如果设为 function,其 this 上下文指针指向工具提示关联的元素。

trigger string 'hover focus' 设置工具提示的触发方式,可设为 click | hover | focus | manual。可设为多种方式,以空格间隔。manual 方式不能和其他方式混用。
viewport string | object | function { selector: 'body', padding: 0 }

让工具提示框保持在哪个元素范围之内。例: viewport: '#viewport'{ "selector": "#viewport", "padding": 0 }

如果设为 function,将传入触发工具提示的 DOM 对象参数。其 this 上下文指针指向当前工具提示实例。

使用 data 属性初始化工具提示

上述配置项均可通过设置为 data 属性的方式来初始化工具提示框。

方法 #

$().tooltip(options) #

为一个元素添加工具提示功能。

.tooltip('show') #

显示一个元素的工具提示框。在工具提示框确实显示出来之前即返回调用元素(即在 shown.bs.tooltip 事件触发之前)。这由 "manual" 触发方式的工具提示调用。提示内容为空时将不显示。

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

.tooltip('hide') #

隐藏一个元素的工具提示框。在工具提示框确实隐藏之前即返回调用元素(即在 hidden.bs.tooltip 事件触发之前)。这由 "manual" 触发方式的工具提示调用。

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

.tooltip('toggle') #

切换一个元素的工具提示框的显示和隐藏。在工具提示框确实显示或隐藏之前即返回调用元素(即在 shown.bs.tooltiphidden.bs.tooltip 事件触发之前)。这由 "manual" 触发方式的工具提示调用。

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

.tooltip('destroy') #

隐藏并销毁一个元素的工具提示框。工具提示将从关联元素(在创建时传入的 selector 配置项)上取消事件绑定。

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

事件 #

事件类型 描述
show.bs.tooltip 在工具提示实例的 show 方法被调用时立即触发。
shown.bs.tooltip 在工具提示框完全显示出来后立即触发(在显示动画完成后)。
hide.bs.tooltip 在工具提示实例的 hide 方法被调用时立即触发。
hidden.bs.tooltip 在工具提示框完全隐藏消失后立即触发(在隐藏动画完成后)。
inserted.bs.tooltip 在事件 show.bs.tooltip 触发并且工具提示框模板加入到 DOM 中之后立即触发。
$('#myTooltip').on('hidden.bs.tooltip', function () {
  // do something…
})

弹出框 bs/popover #

ID: bs/popover

Bootstrap 3 的弹出框插件

为任意元素添加一小块浮层,就像 iPad 上一样,用于存放非主要信息。

弹出框的标题和内容的长度都是零的话将永远不会被显示出来。

组件库中对弹出框位置进行了功能增强,支持左上角、右上角、左下角、右下角定位。

插件依赖

弹出框插件依赖于工具提示插件,组件库已通过 RequireJS 处理了这种依赖关系,直接引入弹出框插件即可

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入弹出框插件依赖。

define(['bs/popover'], function() {
    // Now you can use Popover plugin via .popover() method.
});

当然,也可以直接引入使用。

require(['bs/popover'], function() {
    // Now you can also use Popover plugin via .popover() method.
});

示例 #

示例效果可以前往 弹出框示例 页面查看。

用法 #

通过 JavaScript 代码启动弹出框:

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

初始化

由于性能的原因,工具提示和弹出框的 data 编程接口(data api)是必须要手动初始化的

在一个页面上一次性初始化所有弹出框的方式是通过 data-toggle 属性选中他们:

$(function () {
  $('[data-toggle="popover"]').popover()
})

在按钮组、输入框组和表格中使用弹出框需要额外的设置

当在一个按钮组(.btn-group)或一个输入框组(.input-group),或一个表格元素中(<td>, <th>, <tr>, <thead>, <tbody>, <tfoot>)使用弹出框时,需要将容器设为 'body',即 container: 'body',为了避免影响周围元素事件、样式等的匹配效果。

不要尝试在隐藏元素上显示弹出框

对一个隐藏的元素使用 $(...).popover('show') 显示弹出框会导致提示位置显示不正确。

禁用状态的元素上显示工具提示需要添加一个包裹层

在一个拥有禁用状态(含有属性 disabled 或 样式 .disabled)的元素上显示工具提示时,需要将当前元素放在一个容器层 <div>; 之内,并在当前容器层之上使用工具提示。

多行的链接

有时会在一个有多行内容的超链接上添加弹出框,这时插件默认显示位置是在水平和垂直方向上居中。可以通过为该链接添加样式 white-space: nowrap; 避免这种情况。

配置项 #

可以通过 data 属性或 JavaScript 传递配置项参数。对于 data 属性,需要将配置项参数名附着到 data- 后面,例如 data-animation=""

名称 类型 默认值 描述
animation boolean true 是否在弹出框元素上添加样式 fade 以显示淡出的 CSS 动画效果
container string | false false

将弹出框元素添加在一个指定元素容器之内。比如: container: 'body'。这个配置项可以有效避免影响周围元素的事件、样式匹配等情况。

content string | function ''

未通过属性 data-content 设置弹出框内容时,默认值为空。

当设为 function 时,方法的 this 上下文指针指向弹出框关联的元素。

delay number | object 0

显示和隐藏弹出框的延迟时间(毫秒)—— 触发类型为 manual 时不会生效

如果设置成数字类型,将同时对隐藏/显示效果生效

可以设置成对象类型: delay: { "show": 500, "hide": 100 }

html boolean false 是否允许内容含有 HTML 标签。如果设置为 false,将使用 jQuery 的 text 方法插入内容。使用文本内容可过滤掉 XSS 攻击。
placement string | function 'right'

设置弹出框的位置,可选为 'top' | 'bottom' | 'left' | 'right' | 'auto' | 'top left' | 'top right' | 'bottom left' | 'bottom right'。
当设置含有 "auto" 时,弹出框将自动适应位置。例如,如果设为 "auto left",弹出框将尽可能地显示在左侧,否则,会显示在右侧。
当 "top" 和 "left"、"right" 或 "bottom" 和 "left"、"right" 组合设置时,弹出框将相对于关联元素尽量靠左上或右下定位,此时,弹出框箭头将靠左或靠右显示。
组合设置可交互位置,即 "left top" 等效于 "top left"

当设为 function 时,会依次传入当前弹出框的 DOM 对象参数和触发弹出框的 DOM 对象参数,方法的 this 上下文指针指向当前弹出框实例对象。

selector string false 如果设置了 selector,弹出框对象将关联到 selector 指定的对象上。实际应用中, 这个配置项会经常应用到为一个动态添加的 HTML 元素添加弹出框功能。可查看 这个问题一个实际案例
template string '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'

创建弹出框的外层容器。

弹出框的 title 将自动加入到 .popover-title 中。

弹出框的 content 将自动加入到 .popover-content 中.

.arrow 将变成弹出框的箭头。

最外层的容器元素需要具有样式 class .popover

title string | function ''

如果未设置有效值,会默认使用 title 属性值。

如果设为 function,其 this 上下文指针指向弹出框关联的元素

trigger string 'click' 设置弹出框的触发方式,可设为 click | hover | focus | manual。可设为多种方式,以空格间隔。manual 方式不能和其他方式混用。
viewport string | object | function { selector: 'body', padding: 0 }

让弹出框保持在哪个元素范围之内。例: viewport: '#viewport'{ "selector": "#viewport", "padding": 0 }

如果设为 function,将传入触发弹出框的 DOM 对象参数。其 this 上下文指针指向当前弹出框实例。

使用 data 属性初始化弹出框

上述配置项均可通过设置为 data 属性的方式来初始化弹出框。

方法 #

$().popover(options) #

为一个元素添加弹出框功能。

.popover('show') #

显示一个元素的弹出框。在弹出框确实显示出来之前即返回调用元素(即在 shown.bs.tooltip 事件触发之前)。这由 "manual" 触发方式的弹出框调用。标题和内容均为空时将不显示。

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

.popover('hide') #

隐藏一个元素的弹出框。在弹出框确实隐藏之前即返回调用元素(即在 hidden.bs.tooltip 事件触发之前)。这由 "manual" 触发方式的弹出框调用。

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

.popover('toggle') #

切换一个元素的弹出框的显示隐藏和。在弹出框确实显示或隐藏之前即返回调用元素(即在 shown.bs.tooltiphidden.bs.tooltip 事件触发之前)。这由 "manual" 触发方式的弹出框调用。

.popover('destroy') #

隐藏并销毁一个元素的弹出框。弹出框将从关联元素(在创建时传入的 selector 配置项)上取消事件绑定。

事件 #

事件类型 描述
show.bs.popover 在弹出框实例的 show 方法被调用时立即触发。
shown.bs.popover 在弹出框完全显示出来后立即触发(在显示动画完成后)。
hide.bs.popover 在弹出框实例的 hide 方法被调用时立即触发。
hidden.bs.popover 在弹出框完全隐藏消失后立即触发(在隐藏动画完成后)。
inserted.bs.popover 在事件 show.bs.tooltip 触发并且弹出框模板加入到 DOM 中之后立即触发。
$('#myPopover').on('hidden.bs.popover', function () {
  // do something…
})

警告框 bs/alert #

ID: bs/alert

Bootstrap 3 的警告框插件

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入警告框插件依赖。

define(['bs/alert'], function() {
    // Now you can use Alert plugin via .alert() method.
});

当然,也可以直接引入使用。

require(['bs/alert'], function() {
    // Now you can also use Alert plugin via .alert() method.
});

示例 #

示例效果可以前往 警告框示例 页面查看。

用法 #

为关闭按钮添加 data-dismiss="alert" 属性就可以使其自动为警告框赋予关闭功能。关闭警告框也就是将其从 DOM 中删除。

<button type="button" class="close" data-dismiss="alert" aria-label="Close">
  <span aria-hidden="true">&times;</span>
</button>

为了让警告框在关闭时表现出动画效果,请确保为其添加了 .fade.in 类。

方法 #

$().alert() #

让警告框监听具有 data-dismiss="alert" 属性的后裔元素的点击(click)事件。(如果是通过 data 属性进行的初始化则无需使用)

$().alert('close') #

关闭警告框并从 DOM 中将其删除。如果警告框被赋予了 .fade.in 类,那么,警告框在淡出之后才会被删除。

事件 #

Bootstrap 的警告框插件对外暴露了一些可以被监听的事件。

事件类型 描述
close.bs.alert close 方法被调用后立即触发此事件。
closed.bs.alert 当警告框被关闭后(也即 CSS 过渡效果完毕之后)立即触发此事件。
$('#myAlert').on('closed.bs.alert', function () {
  // do something…
})

按钮 bs/button #

ID: bs/button

Bootstrap 3 的按钮插件

按钮的功能很丰富。通过控制按钮的状态或创建一组按钮并形成一些新的组件,例如工具条。

跨浏览器兼容性

在页面多次加载之间,Firefox 仍然保持表单控件的状态(禁用状态和选择状态)。一个解决办法是设置 autocomplete="off"。参见 Mozilla bug #654072

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入按钮插件依赖。

define(['bs/button'], function() {
    // Now you can use Button plugin via .button() method.
});

当然,也可以直接引入使用。

require(['bs/button'], function() {
    // Now you can also use Button plugin via .button() method.
});

示例 #

示例效果可以前往 按钮示例 页面查看。

状态 #

通过添加 data-loading-text="Loading..." 可以为按钮设置正在加载的状态。

从 v3.3.5 版本开始,此特性不再建议使用,并且已经在 v4 版本中删除了。

按你喜欢地设置状态文本

为了演示,我们使用了 data-loading-text$().button('loading'),但是这些不是你唯一可以使用状态,查看下面的 $().button(string) 方法说明

<button type="button" id="myButton" data-loading-text="Loading..." class="btn btn-primary" autocomplete="off">
  Loading state
</button>

<script>
  $('#myButton').on('click', function () {
    var $btn = $(this).button('loading')
    // business logic...
    $btn.button('reset')
  })
</script>

单独按钮切换 #

为单独按钮添加属性 data-toggle="button" 以激活状态切换。

切换之前的按钮状态需要添加 .activearia-pressed="true"

为了切换之前的按钮状态, 必须自己为按钮添加样式 class .active 和属性 aria-pressed="true"

<button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false" autocomplete="off">
  Single toggle
</button>

复选框 / 单选按钮 #

为一个包含复选框或单选按钮的按钮组 .btn-group 添加属性 data-toggle="buttons",可以激活它们的选中状态的自动切换。

预选状态需要添加 .active

为了显示预选状态,需要自行为复选框或单选按钮的 label 元素添加样式 class .active

仅支持响应 click 事件自动检查更新状态

如果一个复选框或单选按钮的选中状态不是通过按钮的 click 事件触发(比如通过重置按钮 <input type="reset"> 或通过设置选中属性 checked),需要手动自行为复选框或单选按钮的 label 元素切换样式 class .active

<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-primary active">
    <input type="checkbox" autocomplete="off" checked> Checkbox 1 (pre-checked)
  </label>
  <label class="btn btn-primary">
    <input type="checkbox" autocomplete="off"> Checkbox 2
  </label>
  <label class="btn btn-primary">
    <input type="checkbox" autocomplete="off"> Checkbox 3
  </label>
</div>
<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-primary active">
    <input type="radio" name="options" id="option1" autocomplete="off" checked> Radio 1 (preselected)
  </label>
  <label class="btn btn-primary">
    <input type="radio" name="options" id="option2" autocomplete="off"> Radio 2
  </label>
  <label class="btn btn-primary">
    <input type="radio" name="options" id="option3" autocomplete="off"> Radio 3
  </label>
</div>

方法 #

$().button('toggle') #

切换按钮状态。改变为按钮之前已经激活的样式。

$().button('reset') #

重置按钮状态 - 将按钮上的文本还原回原始的内容。此为异步方法,此方法在内容被重置完成之前即返回

$().button(string) #

以其他任意字符串定义按钮的状态文本。

<button type="button" id="myStateButton" data-complete-text="finished!" class="btn btn-primary" autocomplete="off">
  ...
</button>

<script>
  $('#myStateButton').on('click', function () {
    $(this).button('complete') // button text will be "finished!"
  })
</script>

折叠插件 bs/collapse #

ID: bs/collapse

Bootstrap 3 的 Collapse 插件

一个灵活的使用极少数的类切换元素隐藏和显示动画效果的插件。

插件依赖

Collapse 插件需要动画过度插件 transition 配合,组件库已默认引入了该插件。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Collapse 插件依赖。

define(['bs/collapse'], function() {
    // Now you can use Collapse plugin via .collapse() method.
});

当然,也可以直接引入使用。

require(['bs/collapse'], function() {
    // Now you can also use Collapse plugin via .collapse() method.
});

示例 #

示例效果可以前往 Collapse 示例 页面查看。

用法 #

Collapse 插件使用极少的样式类实现处理更多的折叠效果:

通过 data 属性 #

仅仅为元素添加属性 data-toggle="collapse"data-target 即可自动为元素赋予折叠效果。属性 data-target 可以设置为一个 CSS 选择器用以指定要折叠的内容元素。请确定已经为折叠元素添加了样式 class collapse。如果想要折叠元素默认是打开的,需要为其添加样式 class in

为一组元素添加折叠效果时,需要为触发折叠事件的元素添加属性 data-parent="#selector"。具体可参考 Collapse 示例 中的相应效果。

通过 JavaScript #

手动触发:

$('.collapse').collapse()

配置项 #

可以通过 data 属性或 JavaScript 传递配置项参数。对于 data 属性,需要将配置项参数名附着到 data- 后面,例如 data-parent=""

名称 类型 默认值 描述
parent selector false 如果设置了一个选择器,则指定 parent 下的折叠内容元素显示时,其他所有折叠内容元素将自动隐藏。(类似于传统的手风琴效果 —— 这经常依赖于其上层元素拥有样式类 panel,即在面板中使用)
toggle boolean true 自动切换折叠内容元素的显示和隐藏效果

方法 #

.collapse(options) #

激活内容的自动折叠效果,接受一个可选的任意对象参数。

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

.collapse('toggle') #

切换可折叠元素的显示和隐藏。在折叠元素确实显示或隐藏之前即返回调用元素(即在事件 shown.bs.collapsehidden.bs.collapse 触发之前)。

.collapse('show') #

显示一个可折叠元素。在折叠元素确实显示出来之前即返回调用元素(即在事件 shown.bs.collapse 触发之前)。

.collapse('hide') #

隐藏一个可折叠元素。在折叠元素确实隐藏起来之前即返回调用元素(即在事件 hidden.bs.collapse 触发之前)。

事件 #

折叠插件在样式 class 改变时会自动触发一些事件,通过监听这些事件可以实现自己的一些处理。

事件类型 描述
show.bs.collapse 在折叠对象的 show 方法被调用时立即触发。
shown.bs.collapse 在折叠元素完全显示出来后立即触发(在显示动画完成后)。
hide.bs.collapse 在折叠对象的 hide 方法被调用时立即触发。
hidden.bs.collapse 在折叠元素完全隐藏消失后触发(在隐藏动画完成后)。
$('#myCollapsible').on('hidden.bs.collapse', function () {
  // do something…
})

轮播插件 bs/carousel #

ID: bs/carousel

Bootstrap 3 的 Carousel 插件

一个循环展示多个元素的幻灯效果的组件,类似于旋转木马。不支持多个组件嵌套

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Carousel 插件依赖。

define(['bs/carousel'], function() {
    // Now you can use Carousel plugin via .carousel() method.
});

当然,也可以直接引入使用。

require(['bs/carousel'], function() {
    // Now you can also use Carousel plugin via .carousel() method.
});

示例 #

示例效果可以前往 Carousel 示例 页面查看。

用法 #

多个轮播组件 #

轮播组件需要使用一个最外层容器(拥有样式类 .carousel)的 id 来保证轮播控件的正常运作。当添加多个轮播组件时,如果更改了组件容器的 id,需要保证其下控件的关联关系也要随之更新。

通过 data 属性 #

使用 data 属性可以很方便地控制轮播组件的位置。属性 data-slide 可以设为 prevnext,它们用以改变轮播组件的当前滚动位置。或者,设置属性 data-slide-to 为原本的滚动索引,如 data-slide-to="2",将直接切换到滚动位置,索引从 0 开始。

属性 data-ride="carousel" 用以标记滚动组件在页面加载后即以动画效果开始运作。这种方式不能和(多余且不必要)明确使用 JavaScript 初始化同一个轮播组件同时混用。

通过 JavaScript #

手动调用轮播组件:

$('.carousel').carousel()

配置项 #

可以通过 data 属性或 JavaScript 传递配置项参数。对于 data 属性,需要将配置项参数名附着到 data- 后面,例如 data-interval=""

名称 类型 默认值 描述
interval number 5000 自动循环切换两项之间的间隔时间。如果设为 false,将不再自动循环切换。
pause string | null "hover" 如果设为 "hover",鼠标悬停(mouseenter)在轮播组件上时将停止循环,鼠标移开后(mouseleave)继续循环。如果设为 null,鼠标悬停时不再停止循环。
wrap boolean true 设置轮播组件是否自动连续循环或能够手动停止。
keyboard boolean true 设置轮播组件是否相应键盘事件。

方法 #

.carousel(options) #

使用一个 object 参数初始化轮播组件,并且开始循环播放。

$('.carousel').carousel({
  interval: 2000
})

.carousel('cycle') #

从左至右循环播放轮播组件。

.carousel('pause') #

暂停轮播组件的循环播放。

.carousel(number) #

循环到指定的轮播项(从 0 开始,类似一个数组)。

.carousel('prev') #

循环到下一个轮播项。

.carousel('next') #

循环到上一个轮播项。

事件 #

轮播组件在样式 class 改变时会自动触发一些事件,通过监听这些事件可以实现自己的一些处理。

所有事件对象都拥有以下额外添加的属性:

所有的轮播组件事件都在轮播元素上触发(即在元素 <div class="carousel"> 上)。

事件类型 描述
slide.bs.carousel 在轮播组件实例的 slide 方法调用后立即触发。
slid.bs.carousel 在轮播组件的滚动过渡效果完成后立即触发。
$('#myCarousel').on('slide.bs.carousel', function () {
  // do something…
})

圆形时钟 bs/clockpicker #

ID: bs/clockpicker

一个基于 Bootstrap 风格的时钟样式的时间选择器。

支持所有主流浏览器。在 IE9+ 之上显示效果更佳,在 IE8 上可用。兼容手机端。

当前版本 v0.0.7。组件原官方地址 On GitHub,以及原文档地址 On GitHub Pages

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入圆形时钟组件依赖。

define(['bs/clockpicker'], function() {
    // Now you can use Clockpicker plugin via .clockpicker() method.
});

当然,也可以直接引入使用。

require(['bs/clockpicker'], function() {
    // Now you can also use Clockpicker plugin via .clockpicker() method.
});

示例 #

示例效果可以前往 圆形时钟示例 页面查看。

用法 #

通常情况下,可以通过 Bootstrap 的 输入框组 组成时钟日期的 DOM 结构:

<div class="input-group clockpicker"> 
  <input type="text" class="form-control" value="09:30"> 
  <span class="input-group-addon"> 
    <span class="glyphicon glyphicon-time"></span> 
  </span> 
</div>

然后,通过 JavaScript 初始化时钟实例:

$('.clockpicker').clockpicker();

当然,时钟的 DOM 结构可以是任意的、简单的输入框元素,在 示例 中可以查看相应的案例。

配置 #

可以通过 data 属性或 JavaScript 传递配置项参数。对于 data 属性,需要将配置项参数名附着到 data- 后面,例如 data-placement=""

通过 data 属性 #

<div class="input-group clockpicker" data-placement="left" data-align="top" data-autoclose="true"> 
  <input type="text" class="form-control" value="13:14"> 
  <span class="input-group-addon"> 
    <span class="glyphicon glyphicon-time"></span> 
  </span> 
</div>

通过 JavaScript #

$('.clockpicker').clockpicker({ 
  placement: 'left', 
  align: 'top', 
  autoclose: true
});

配置项 #

名称 默认值 描述
default '' 默认时间,如:'now' or '13:14'
placement 'bottom' 时钟组件弹出框的位置
align 'left' 时钟组件弹出框箭头的对齐位置
donetext '完成' '完毕'按钮显示文本
autoclose false 在选择分钟后是否自动关闭
vibrate true 拖动时钟指针时是否震动(手机)设备
fromnow 0 设置默认时间为从当前时间起之后的毫秒数(默认等效于 'now'
init 时钟组件初始化后立即触发。
beforeShow 时钟组件调用 show 方法时立即触发。
afterShow 时钟组件完全显示后立即触发。
beforeHide 时钟组件调用 hide 方法时立即触发。
注: 在 beforeDone 和 afterDone 之间触发
afterHide 时钟组件完全隐藏后立即触发。
注: 在 beforeDone 和 afterDone 之间触发
beforeHourSelect 点击时钟组件的小时时立即触发。
afterHourSelect 点击选择时钟组件的小时后立即触发。
beforeDone 点击时钟组件的'完毕'按钮时立即触发。
afterDone 时钟组件选择完毕(日期回写至输入框内)后立即触发。

方法 #

.clockpicker('show') #

显示时钟组件。

.clockpicker('hide') #

隐藏时钟组件。

.clockpicker('remove') #

销毁时钟组件(移除监听事件)。

.clockpicker('toggleView') #

可传入第二个参数 'hours''minutes'。切换到小时或分钟视图。

日期选择 bs/datetimepicker #

ID: bs/datetimepicker

一个弹出日期时间选择框的组件。

当前版本 v2.4.4。组件原官方地址 On GitHub,以及 原文档地址原文档中内容是基于 Bootstrap 2 的写法,建议查看本站的相关文档。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入日期选择框组件依赖。

define(['bs/datetimepicker'], function() {
    // Now you can use Datetimepicker plugin via .datetimepicker() method.
});

当然,也可以直接引入使用。

require(['bs/datetimepicker'], function() {
    // Now you can also use Datetimepicker plugin via .datetimepicker() method.
});

示例 #

示例效果可以前往 日期选择框示例 页面查看。

用法 #

日期选择组件需要通过 JavaScript 激活。

$('#datetimepicker').datetimepicker();

通过属性标记 #

组件默认 DOM 结构:

<div class="input-group date" id="datetimepicker" data-date="12-02-2012" data-date-format="dd-mm-yyyy"> 
  <input class="form-control" type="text" value="" readonly="readonly"> 
  <span class="input-group-addon"> 
    <i class="glyphicon glyphicon-th"></i> 
  </span> 
</div>

带有重置按钮的默认 DOM 结构:

<div class="input-group date" id="datetimepicker" data-date="12-02-2012" data-date-format="dd-mm-yyyy"> 
  <input class="form-control" type="text" value="" readonly="readonly">
  <span class="input-group-addon"> 
    <i class="glyphicon glyphicon-remove"></i> 
  </span> 
  <span class="input-group-addon"> 
    <i class="glyphicon glyphicon-th"></i> 
  </span> 
</div>

通过 JavaScript #

$('#datetimepicker').datetimepicker({
    format: 'yyyy-mm-dd hh:ii'
});

配置项 #

所有可以设为 Date 类型的参数都可以传入一个 Date 对象;或者如配置项 format 可以设为一个格式化字符串;或者一个与当天相关的间隔时间,比如 '-1d', '+6m +1y' 等拥有合法单位('d' (day), 'w' (week), 'm' (month), 或 'y' (year))的字符串。

自然,你也可以设置一个 ISO-8601 格式的日期时间。以下是一些合法常用的日期格式:

format #

String

默认值:'mm/dd/yyyy'

对应 data 属性:data-date-format

日期格式,包含 p, P, h, hh, i, ii, s, ss, d, dd, m, mm, M, MM, yy, yyyy。

weekStart #

Integer

默认值:0

对应 data 属性:data-date-weekstart

每周的开始天数。可选 0 (星期天) 到 6 (星期六)。

startDate #

Date

默认值:当前时间

对应 data 属性:data-date-startdate

最早可以被选择的日期时间。之前的日期时间不可以选择。

endDate #

Date

默认值:当前月的最后一天

对应 data 属性:data-date-enddate

最晚可以被选择的日期时间。之后的日期时间不可以选择。

daysOfWeekDisabled #

String | Array

默认值:[]

对应 data 属性:data-date-days-of-week-disabled

每周被禁用选择的天数。可选 0 (星期天) 到 6 (星期六)。多个值时可以以英文逗号间隔,或是一个数组。比如 '0,6'[0, 6]

autoclose #

Boolean

默认值:false

对应 data 属性:data-date-autoclose

当选择完日期时间后是否自动关闭日期时间选择框。

startView #

Number | String

默认值:2, 'month'

对应 data 属性:data-start-view

当日期时间选择框打开后应该默认显示的视图面板。可选为:

  1. 0'hour' 用以显示 小时 视图面板
  2. 1 or 'day' 用以显示 天 视图面板
  3. 2 or 'month' 用以显示 月 视图面板(默认)
  4. 3 or 'year' 用以显示选择 12 个月的视图面板
  5. 4 or 'decade' 用以显示前后 10 年的视图面板。常用于生日选择框

minView #

Number | String

默认值:0, 'hour'

对应 data 属性:data-min-view

日期组件最低可以选择的视图面板。

maxView #

Number | String

默认值:4, 'decade'

对应 data 属性:data-max-view

日期组件最高可以选择的视图面板。

clearBtn #

Boolean

默认值:false

对应 data 属性:data-date-clear-btn

如果设为 true,会在日期选择框底部显示 "Clear" 按钮以清空当前选择。同时,当 autoclose 设为 true 时日期选择框将自动关闭。

todayBtn #

Boolean | "linked"

默认值:false

对应 data 属性:data-date-today-btn

如果设为 true"linked",会在日期选择框底部显示 "Today" 按钮以选择当天日期。如果设为 true,"Today" 按钮将只在日期视图面板中显示;如果设为 "linked","Today" 按钮将在所有视图面板中显示。

todayHighlight #

Boolean

默认值:false

对应 data 属性:data-date-today-highlight

如果设为 true,将高亮显示当前日期。

keyboardNavigation #

Boolean

默认值:true

对应 data 属性:data-date-keyboard-navigation

设置是否允许键盘的上下左右按键选择日期。

language #

String

默认值:zh-CN

对应 data 属性:data-date-language

设置显示月和天等的语言。这些也会显示在输入框内。其他可选的值如 'zh-TW' (中国台湾), 'en' (英语), 'de' (德语), 'br' (巴西语), 和 'es' (西班牙语) 等(参看下面的 I18N)。如果设置了一个未知语言,将默认使用英语。

forceParse #

Boolean

默认值:true

对应 data 属性:data-date-force-parse

是否在关闭选择框时强制转换输入框的值。即,当用户在输入框内设置一个非法的日期时,日期选择组件将根据 format 配置项校验输入框内的值并强制转换为新值。

bootcssVer #

Number

覆盖默认 Bootstrap 版本的自动检测结果并指定当前采用的 Bootstrap 版本(如 2 或 3)。

组件库的基本样式使用的是 Bootstrap 3。

minuteStep #

Number

默认值:5

对应 data 属性:data-minute-step

小时视图面板下的显示分钟的间隔数。

pickerReferer : deprecated #

String

默认值:'default'(另外可选值:'input'

放置日期选择框元素的关联元素。如果想要把日期选择框放仅仅放在输入框区域下,可设为 input

pickerPosition #

String

默认值:'bottom-right' (另外可选值:'bottom-left')

对应 data 属性:data-picker-position

日期选择框的显示位置。使用这个配置项可以将日期选择框放在输入框之下。

viewSelect #

Number | String

默认值:同 minView (可选值为:'decade', 'year', 'month', 'day', 'hour')

对应 data 属性:data-view-select

使用这个配置项可以选择从哪个视图面板开始选择日期。默认情况是最后一个,然而你可以选择第一个,以便每次点击时都会更新日期。

showMeridian #

Boolean

默认值:false

对应 data 属性:data-show-meridian

该配置项用以设置显示 dayhour 视图面板为子午线时间视图。

initialDate #

Date | String

默认值:new Date()

对应 data 属性:data-date

设置日期选择框默认显示的日期时间。默认是当前时间。另外可以设置为昨天或今天午夜时分。

zIndex #

Number

默认值:undefined

对应 data 属性:data-z-index

日期选择插件会自动计算并设置选择框在 DOM 树中更高的 zIndex 值。自行设置该值可避免默认处理。

timezone #

String

默认值: 客户端当前时区的缩写名称

设置视图面板显示时间的时区。要注意的是该配置项必须要与 Z 格式化字符结合使用。比如:

$('#date-end').datetimepicker({ 
  format: 'yyyy-mm-dd hh:ii P Z', 
  timezone: 'GMT' 
});

onRenderYear #

该事件在日期选择框中的年份内容渲染出来后触发。需要返回一个添加到元素上的样式类数组。可以返回 ['disabled'] 以禁用选择到年。

$('#date').datetimepicker({ 
  onRenderYear: function(date) { 
    // Disable picking dates from any year apart from 2015/2016 
    if (date.getFullYear() < 2015 || date.getFullYear() > 2016) 
      return ['disabled'];
  }
});

onRenderMonth #

该事件在日期选择框中的月份内容渲染出来后触发。需要返回一个添加到元素上的样式类数组。可以返回 ['disabled'] 以禁用选择到月。

$('#date').datetimepicker({ 
    onRenderMonth: function(date) { 
      //Disable every other month in the year 2016 
      if (date.getUTCMonth() % 2 === 0 && date.getUTCFullYear() === 2016)
        return ['disabled'];
    } 
});

onRenderDay #

该事件在日期选择框中的天数内容渲染出来后触发。需要返回一个添加到元素上的样式类数组。可以返回 ['disabled'] 以禁用选择到天。

$('#date').datetimepicker({ 
  onRenderDay: function(date) { 
    //Disable dates 18-24 of every month 
    if (date.getDate() >= 18 && date.getDate() <= 24) 
      return ['disabled']; 
  } 
});

onRenderHour #

该事件在日期选择框中的小时内容渲染出来后触发。需要返回一个添加到元素上的样式类数组。可以返回 ['disabled'] 以禁用选择到小时。

$('#date').datetimepicker({ 
  onRenderHour: function(hour) { 
    //Disable any time between 12:00 and 13:59 
    if (date.getUTCHours() === 12 || date.getUTCHours() === 13) 
      return ['disabled']; 
  } 
});

onRenderMinute #

该事件在日期选择框中的分钟内容渲染出来后触发。需要返回一个添加到元素上的样式类数组。可以返回 ['disabled'] 以禁用选择到分钟。

$('#date').datetimepicker({ 
  onRenderMinute: function(minute) { 
    // Disable all times between 30 past and 20 to every hour for workdays 
    if (date.getDay() !== 0 && date.getDay() !== 6 && date.getUTCMinutes() >= 30 && date.getUTCMinutes() <= 40) 
      return ['disabled']; 
  } 
});

fontAwesome #

Boolean

默认值:false

对应 data 属性:data-font-awesome

如果设为 true,将采用 Font Awesome 字体图标。

方法 #

.datetimepicker(options) #

初始化一个日期选择组件。

remove #

参数: 无

移除日期选择组件。将移除绑定事件,内部绑定对象以及添加到页面上的 DOM 元素。

$('#datetimepicker').datetimepicker('remove');

show #

参数: 无

显示日期选择框。

$('#datetimepicker').datetimepicker('show');

hide #

参数: 无

隐藏日期选择框。

$('#datetimepicker').datetimepicker('hide');

update #

参数:

用指定日期更新日期选择组件。

$('#datetimepicker').datetimepicker('update', new Date());

省略 currentDate 参数时,默认用输入框值更新日期选择组件。

$('#datetimepicker').datetimepicker('update');

setStartDate #

参数:

设置日期选择组件的最小限制选择时间。

$('#datetimepicker').datetimepicker('setStartDate', '2012-01-01');

省略 startDate 参数(或设置一个无效值)以重设最小限制。

$('#datetimepicker').datetimepicker('setStartDate');
$('#datetimepicker').datetimepicker('setStartDate', null);

setEndDate #

参数:

设置日期选择组件的最大限制选择时间。

$('#datetimepicker').datetimepicker('setEndDate', '2012-01-01');

省略 endDate 参数(或设置一个无效值)以重设最大限制。

$('#datetimepicker').datetimepicker('setEndDate');
$('#datetimepicker').datetimepicker('setEndDate', null);

setDaysOfWeekDisabled #

参数:

设置每周应该禁用的天。

$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', [0,6]);

省略 daysOfWeekDisabled 参数(或设置一个无效值)以重设禁用限制。

$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled');
$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', null);

setMinutesDisabled #

参数:

设置应该禁用的分钟。

$('#datetimepicker').datetimepicker('setMinutesDisabled', [25,59]);

省略 minutesDisabled 参数(或设置一个无效值)以重设禁用限制。

$('#datetimepicker').datetimepicker('setMinutesDisabled');
$('#datetimepicker').datetimepicker('setMinutesDisabled', null);

setHoursDisabled #

参数:

设置应该禁用的小时。

$('#datetimepicker').datetimepicker('setHoursDisabled', [12,19]);

省略 hoursDisabled 参数(或设置一个无效值)以重设禁用限制。

$('#datetimepicker').datetimepicker('setHoursDisabled');
$('#datetimepicker').datetimepicker('setHoursDisabled', null);

setInitialDate #

参数:

为日期选择组件设置一个新的初始化时间。

$('#datetimepicker').datetimepicker('setInitialDate', "2012-12-31");

getInitialDate #

获取日期选择组件的初始化时间。

$('#datetimepicker').datetimepicker('getInitialDate');

事件 #

日期选择组件暴露了几个事件以处理日期。

show #

日期选择框显示后触发。

hide #

日期选择框隐藏后触发。

changeDate #

日期改变后触发。

$('#date-end')
  .datetimepicker()
  .on('changeDate', function(ev){
    if (ev.date.valueOf() < date-start-display.valueOf()){
        ....
    }
  });

changeYear #

year 视图面板从 decade 视图面板改变时触发。

changeMonth #

month 视图面板从 year 视图面板改变时触发。

outOfRange #

当通过 setDatesetUTCDate 方法选择一个在 startDate 之前或在 endDate 之后的时间时触发。

next:* / prev:* #

点击 nextprevious 箭头时触发。在所有不同视图面板('year', 'month', 'day', 'hour')中都支持。比如在月份面板中会触发回调操作 'next:month''prev:month'

键盘支持 #

日期选择组件包含一些键盘事件支持:

上下左右方向键 #

在显示面板时,左/右键将向后/前移动一天,上/下键将向后/前移动一周。

当按下 shift 键时,上/左键将向后移动一个月,下/右键将向前移动一个月。

当按下 ctrl 键时,上/左键将向后移动一年,下/右键将向前移动一年。

同时按下 shiftctrl 键时等同于只按下 ctrl 键 - 这意味着,这样并不会同时改变月份和年份,只会改变年份。

escape键 #

当按下 escape 键时,会切换选择框的显示和隐藏。这样便于用户手动输入时间。

enter键 #

在显示面板时,按下 enter 键会隐藏选择框面板。如果面板已经是隐藏着的,enter 键将响应它的默认操作 - 自动提交表单等。

鼠标支持 #

为了使日期选择框更方便地显示每块日期时间的内容,插件提供了对鼠标滚轮事件的支持。比如在某年视图面板上,向上滚动鼠标滚轮会切换到十年年段视图面板,向下滚动滚轮会切换到分钟视图面板。

依赖 #

要支持此功能,需要引入 jQuery 的鼠标滚轮事件插件。组件库已默认加入了该插件。

配置项 #

wheelViewModeNavigation #

Boolean

默认值:false

对应 data 属性:data-view-mode-wheel-navigation

设置是否支持使用鼠标滚轮切换不同的视图面板。

wheelViewModeNavigationInverseDirection #

Boolean

默认值:false

对应 data 属性:data-view-mode-wheel-navigation-inverse-dir

是否反转鼠标滚轮滚动方向。默认向上滚动是切换到十年年段视图面板。

wheelViewModeNavigationDelay #

Integer

默认值:100

对应 data 属性:data-view-mode-wheel-navigation-delay

设置对鼠标滚轮事件响应的延迟时间。控制在两个不同的视图面板之间的切换速度。单位是毫秒。

关于 viewSelect 配置项 #

当启用此功能时 viewSelect 配置项建议设为 4,以便能更方便地在各个视图面板中更新任意值。

I18N #

日期选择组件默认提供了国际化语言设置。默认为中国大陆(zh-CN),其他的有效值组件库已经合并到了组件文件中。通过 $.fn.datetimepicker.dates 可以查看所有可用国际化配置。同时,也可以在调用 .datetimepicker() 之前自定义国际化配置,例如:

$.fn.datetimepicker.dates['en'] = {
    days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
    daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
    daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
    months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
    monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    today: "Today"
};

从右到左显示的语言可以包含属性值 rtl: true,以让日历格式显示更友好。

组件库资源文件默认是以 UTF-8 的编码格式打包,如果你在浏览器上查看面板内容为乱码,请确认资源库的请求内容编码是否为 UTF-8。

日期范围选择 bs/daterangepicker #

ID: bs/daterangepicker

一款基于 Bootstrap 风格的双日历时间段选择控件。

当前版本 v2.1.15。组件原官方地址 On GitHub,以及 原文档地址

插件依赖

日期范围选择组件依赖于时间处理插件 Moment,组件库已通过 RequireJS 处理了这种依赖关系,直接引入组件即可

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入日期范围选择组件依赖。

define(['bs/daterangepicker'], function() {
    // Now you can use Daterangepicker plugin via .daterangepicker() method.
});

当然,也可以直接引入使用。

require(['bs/daterangepicker'], function() {
    // Now you can also use Daterangepicker plugin via .daterangepicker() method.
});

示例 #

示例效果可以前往 日期范围选择示例 页面查看。

用法 #

日期范围选择组件需要通过 JavaScript 初始化,如:

$('input[name="daterange"]').daterangepicker();

更多示例效果可参看 示例页面

配置项 #

初始化日期范围选择组件时可以传入一个对象参数:

$('input[name="daterange"]').daterangepicker({
  // options with key: value
});

对象参数中可以包含以下配置项:

startDate #

Date | Moment | String

初始化日期范围组件的开始日期。未设置时将自动解析并使用输入框的值。

endDate #

Date | Moment | String

初始化日期范围组件的结束日期。未设置时将自动解析并使用输入框的值。

minDate #

Date | Moment | String

用户可以选择的最早的日期。

maxDate #

Date | Moment | String

用户可以选择的最晚的日期。

dateLimit #

PlainObject

设置选择的开始日期到结束日期之间最大的日期间隔。可以设置能够添加到一个 Moment 对象上的任意属性(如 days, months)。例如:

$('input[name="daterange"]').daterangepicker({
  dateLimit: {
      days: 7 // 设置最大间隔 7 天
  }
});

showDropdowns #

Boolean

默认值:false

设置是否在日历选择区域上方显示选择月份和年份的下拉框。

showWeekNumbers #

Boolean

默认值:false

设置是否在日历区域每一行开头显示本地化的周数(年内的第几周)。

showISOWeekNumbers #

Boolean

默认值:false

设置是否在日历区域每一行开头显示国际化的周数(年内的第几周)。

timePicker #

Boolean

默认值:false

允许选择当前的时间,不仅仅是日期。

timePickerIncrement #

Number

默认值:1

设置时间选择框内的分钟递增显示的间隔(比如设为 30 时将仅允许选择 0 或 30 分钟)。

timePicker24Hour #

Boolean

默认值:false

设置是否使用 24 小时制,同时移除 AM/PM 选择框。

timePickerSeconds #

Boolean

默认值:false

设置是否在时间选择内显示秒数选择框。

ranges #

PlainObject

设置用户可以选择的预定义日期范围列表。每个键名是显示范围的名称,对应值是一个包含两个预定义范围的日期。例如:

$('input[name="daterange"]').daterangepicker({
    "ranges": {
        "Today": [
            "2017-05-03T07:16:46.700Z",
            "2017-05-03T07:16:46.700Z"
        ],
        "Yesterday": [
            "2017-05-02T07:16:46.701Z",
            "2017-05-02T07:16:46.701Z"
        ],
        "Last 7 Days": [
            "2017-04-27T07:16:46.701Z",
            "2017-05-03T07:16:46.701Z"
        ],
        "Last 30 Days": [
            "2017-04-04T07:16:46.701Z",
            "2017-05-03T07:16:46.701Z"
        ],
        "This Month": [
            "2017-04-30T16:00:00.000Z",
            "2017-05-31T15:59:59.999Z"
        ],
        "Last Month": [
            "2017-03-31T16:00:00.000Z",
            "2017-04-30T15:59:59.999Z"
        ]
    }
});

showCustomRangeLabel #

Boolean

默认值:true

设置当使用配置项 ranges 时,是否在预定义范围列表下面显示 "自定义范围" 项。不管当前选择的日期范围是否能够匹配预定义的日期范围列表,该配置项将始终被高亮显示。点击 "自定义范围" 项时将显示日历选择面板。

alwaysShowCalendars #

Boolean

默认值:false

通常情况下,当我们使用配置项 ranges 预定义日期范围列表时,日历选择框在点击 "自定义范围" 时才会显示。如果将该配置项设为 true,日历选择框将始终显示。

opens #

String ('left'/'right'/'center')

默认值:'right'

设置选择框相对于关联元素偏左、偏右或居中显示。组件会检查关联元素是否含有样式类 pull-right,如果有,会默认设为 'left',选择框将靠右偏左显示。

drops #

String ('down'/'up')

默认值:'down'

设置选择框显示在关联元素的上方或下方。组件会检查关联元素是否含有样式类 dropup,如果有,会默认设为 'top',选择框将在上方显示。

buttonClasses #

Array | String

默认值:'btn btn-sm'

将要添加到选择框中的按钮上的样式类名称。可以为字符串数组或空格间隔的字符串。

applyClass #

String

默认值:'btn-success'

将要添加到 '确定'(应用) 按钮上的样式类名称。

cancelClass #

String

默认值:'btn-default'

将要添加到 '取消'(取消) 按钮上的样式类名称。

locale #

PlainObject

允许你为按钮和标签文本定义本地化的字符串内容,自定义日期格式,或为日历改变周的第一天。例如:

$('#demo').daterangepicker({
    "locale": {
        "format": "MM/DD/YYYY",
        "separator": " - ",
        "applyLabel": "Apply",
        "cancelLabel": "Cancel",
        "fromLabel": "From",
        "toLabel": "To",
        "customRangeLabel": "Custom",
        "weekLabel": "W",
        "daysOfWeek": [
            "Su",
            "Mo",
            "Tu",
            "We",
            "Th",
            "Fr",
            "Sa"
        ],
        "monthNames": [
            "January",
            "February",
            "March",
            "April",
            "May",
            "June",
            "July",
            "August",
            "September",
            "October",
            "November",
            "December"
        ],
        "firstDay": 1
    },
    "startDate": "04/28/2017",
    "endDate": "05/04/2017"
});

singleDatePicker #

Boolean

默认值:false

设置替换双日历的范围选择框,只显示用以选择一个日期的单日历框。此时,回调方法里的 startend 日期参数将同为选择的单个日期。

选择合适的单日期选择组件

如果你不喜欢组件库中的 日期选择组件 的多视图面板的选择模式,可以尝试该组件的单日历模式。

autoApply #

Boolean

默认值:false

隐藏 应用取消 按钮,并在选择了日期(范围)后自动应用新日期(范围)和隐藏选择框。

linkedCalendars #

Boolean

默认值:true

当设为 true 时,两个日历选择区域会把月份选择(即 一月 和 二月)关联起来,当点击向左或向右箭头切换上或下一个月份时,两个日历选择区域的月份将同步改变。当设为 false 时,两个日历选择区域将会取消月份选择关联,并可以单个切换月份。

isInvalidDate #

Function

一个在显示两个日历内的日期前遍历每个日期的方法,可以返回 truefalse 以指定选择的日期是否可用。

isCustomDate #

Function

一个在显示两个日历内的日期前遍历每个日期的方法,可以返回一个样式类名称字符串或数组,以应用到日历内的每个日期元素上。

autoUpdateInput #

Boolean

默认值:true

设置是否在为一个 <input> 元素初始化选择框和更新日期时自动更新输入框的值。

parentEl #

String

默认值:'body'

设置日期范围选择框将会添加到的父容器元素,可以为 jQuery 选择器。

方法 #

你可以通过使用 setStartDatesetEndDate 方法更新选择框内的 startDateendDate。你可以通过绑定到关联元素上的数据属性使用日期范围选择框实例的方法和属性。

var drp = $('input[name="daterange"]').data('daterangepicker');

setStartDate #

参数

设置日期范围选择框的当前选择日期范围的开始日期。

setEndDate #

参数

设置日期范围选择框的当前选择日期范围的结束日期。

//create a new date range picker
$('input[name="daterange"]').daterangepicker({ startDate: '03/05/2005', endDate: '03/06/2005' });

//change the selected date range of that picker
$('input[name="daterange"]').data('daterangepicker').setStartDate('03/01/2014');
$('input[name="daterange"]').data('daterangepicker').setEndDate('03/31/2014');

事件 #

你可以监听初始化选择框的元素触发的一些事件:

事件类型 描述
show.daterangepicker 在日期范围选择框显示出来后触发。
hide.daterangepicker 在日期范围选择框隐藏消失后触发。
showCalendar.daterangepicker 在日历选择区域显示出来后触发。
hideCalendar.daterangepicker 在日历选择区域隐藏消失后触发。
apply.daterangepicker 应用 按钮被点击或一个预定义的日期范围被点击后触发。
cancel.daterangepicker 取消 按钮被点击后触发。

一些程序需要一个 "清空" 操作,代替 "取消" 操作,这可以通过设置 取消 按钮的标签文本,并监听 cancel 事件来实现:

$('input[name="daterange"]').daterangepicker({
  locale: { cancelLabel: 'Clear' }  
});

$('input[name="daterange"]').on('cancel.daterangepicker', function(ev, picker) {
  //do something, like clearing an input
  $('input[name="daterange"]').val('');
});

在初始化日期范围选择框时设置相应的回调方法是监听日期选择改变事件的最简单方式。当然,你也可以通过监听 应用 按钮的点击事件在日期改变后做一些事情:

$('input[name="daterange"]').daterangepicker();
$('input[name="daterange"]').on('apply.daterangepicker', function(ev, picker) {
  console.log(picker.startDate.format('YYYY-MM-DD'));
  console.log(picker.endDate.format('YYYY-MM-DD'));
});

开关 bs/switcher #

ID: bs/switcher

将复选框或单选按钮元素转化为开关 (ON/OFF) 形式的控件。

当前版本 v3.3.4。组件原官方地址 On GitHub,以及原文档地址 On GitHub Pages

组件库调整

组件库对原组件内容进行适应性的调整,使用文档以本站内容为准。包括:

  • 接口名 bootstrapSwitch 改为了 switcher

  • 事件标记 bootstrapSwitch 改为了 bs.switcher

  • 实例的 data 标记 bootstrap-switch 改为了 bs-switcher

  • 使用 Bootstrap 2 风格样式(开关控件使用渐变背景更有质感)。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入开关组件依赖。

define(['bs/switcher'], function() {
    // Now you can use Switcher plugin via .switcher() method.
});

当然,也可以直接引入使用。

require(['bs/switcher'], function() {
    // Now you can also use Switcher plugin via .switcher() method.
});

示例 #

示例效果可以前往 开关组件示例 页面查看。

用法 #

开关组件需要通过 JavaScript 对复选框或单选按钮元素初始化,如:

$('input[name="switcher"]').switcher();

配置项 #

初始化开关组件时可以传入一个对象参数:

$('input[name="switcher"]').switcher({
  // options with key: value
});

对象参数中可以包含以下配置项:

state #

Boolean

默认值:由元素是否含有 checked 属性决定

开关组件的选中状态。

size #

String

默认值:'normal'

开关组件的尺寸。

可选值:'mini', 'small', 'normal', 'large'。不设置时等效于 'normal'

另可通过元素的 data 属性 data-size 初始化。

animate #

Boolean

默认值:true

切换状态时是否显示过渡动画。

另可通过元素的 data 属性 data-animate 初始化。

disabled #

Boolean

默认值:由元素是否含有 disabled 属性决定

是否禁用开关组件。

readonly #

Boolean

默认值:由元素是否含有 readonly 属性决定

是否只允许获取开关组件的选中状态,而不允许改变。

indeterminate #

Boolean

默认值:false

是否显示为中间状态(不确定状态)。

另可通过元素的 data 属性 data-indeterminate 初始化。

inverse #

Boolean

默认值:false

是否逆向(从右向左)显示 开/关 按键。

另可通过元素的 data 属性 data-inverse 初始化。

radioAllOff #

Boolean

默认值:false

开关组件应用于一组单选按钮时是否全不选。

另可通过元素的 data 属性 data-radio-all-off 初始化。

onColor #

String

默认值:primary

设置开关组件左侧(默认)的 '开' 按键的样式。

可选值:'primary', 'info', 'success', 'warning', 'danger', 'default'。同 Bootstrap 3 的相应风格。

另可通过元素的 data 属性 data-on-color 初始化。

offColor #

String

默认值:default

设置开关组件右侧(默认)的 '关' 按键的样式。

可选值:'primary', 'info', 'success', 'warning', 'danger', 'default'。同 Bootstrap 3 的相应风格。

另可通过元素的 data 属性 data-off-color 初始化。

onText #

String

默认值:'ON'

设置开关组件左侧(默认)的 '开' 按键的文本内容。

也可设为 HTML 字符串。

另可通过元素的 data 属性 data-on-text 初始化。

offText #

String

默认值:'OFF'

设置开关组件右侧(默认)的 '关' 按键的文本内容。

也可设为 HTML 字符串。

另可通过元素的 data 属性 data-off-text 初始化。

labelText #

String

默认值:'&nbsp;'

设置开关组件的 '开' 和 '关' 按键中间的文本内容。

也可设为 HTML 字符串。

另可通过元素的 data 属性 data-label-text 初始化。

handleWidth #

String | Number

默认值:'auto'

设置开关组件左侧或右侧按键的宽度(设数字时单位为像素 px)。

另可通过元素的 data 属性 data-handle-width 初始化。

labelWidth #

String | Number

默认值:'auto'

设置开关组件中间部分的宽度(设数字时单位为像素 px)。

另可通过元素的 data 属性 data-label-width 初始化。

baseClass #

String

默认值:'bootstrap-switch'

设置开关组件全局的样式类的前缀。

另可通过元素的 data 属性 data-base-class 初始化。

wrapperClass #

String | Array

默认值:'wrapper'

设置开关组件最外层容器的样式类。

另可通过元素的 data 属性 data-wrapper-class 初始化。

onInit #

Function

开关组件初始化后的回调方法。

$('input[name="switcher"]').switcher({
  onInit: function(event, state) {
    // do something
  }
});

onSwitchChange #

Function

切换开关组件状态后的回调方法。如果返回 false,将恢复至之前的状态。

$('input[name="switcher"]').switcher({
  onSwitchChange: function(event, state) {
    // do something
  }
});

全局配置 #

可以通过 jQuery 的插件实例全局设置开关组件的配置项。例如

$.fn.switcher.defaults.size = 'large';
$.fn.switcher.defaults.onColor = 'success';

方法 #

配置项方法 #

在开关组件中,每个配置项都可以作为一个方法。

如果省略第二个参数,方法将返回当前配置项的值。

比如可以如下使用配置项对应的方法:

$('input[name="my-checkbox"]').switcher('state'); // get state
$('input[name="my-checkbox"]').switcher('state', true, true); // set state to true

额外的方法 #

名称 描述
toggleState 切换选中状态。
toggleAnimate 切换动画过渡效果。
toggleDisabled 切换禁用状态。
toggleReadonly 切换只读状态。
toggleIndeterminate 切换中间状态。
toggleInverse 切换逆向显示。
destroy 销毁开关组件实例。

特殊行为 #

事件 #

开关组件的所有事件都含有命名空间 .bs.switcher。比如可以这样监听开关组件的事件:

$('input[name="my-checkbox"]').on('switchChange.bs.switcher', function(event, state) {
  console.log(this); // DOM element
  console.log(event); // jQuery event
  console.log(state); // true | false
});
事件类型 描述 方法参数
init.bs.switcher 在开关组件初始化后触发。回调方法中的 this 指向当前 DOM 元素。 event (jQuery Event object), state (true | false)
switchChange.bs.switcher 在开关组件状态切换后触发。回调方法中的 this 指向当前 DOM 元素。 event (jQuery Event object), state (true | false)

滑块 bs/slider #

ID: bs/slider

一个选择数字值范围的滑块组件。支持 IE9(含) 以上的现代浏览器。

当前版本 v9.8.0。组件原官方地址 On GitHub,以及原文档地址 On GitHub Pages

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入滑块组件依赖。

define(['bs/slider'], function() {
    // Now you can use Slider plugin via .slider() method.
});

当然,也可以直接引入使用。

require(['bs/slider'], function() {
    // Now you can also use Slider plugin via .slider() method.
});

示例 #

示例效果可以前往 滑块组件示例 页面查看。

用法 #

通过 jQuery 插件 #

对一个输入框元素的 jQuery 对象调用 .slider() 方法:

// Instantiate a slider
var mySlider = $("input.slider").slider();

// Call a method on the slider
var value = mySlider.slider('getValue');

// For non-getter methods, you can chain together commands
mySlider
  .slider('setValue', 5)
  .slider('setValue', 7);

通过 Slider 类 #

这种方式需要在引入组件后使用相应参数。创建 Slider 实例时传入一个输入框元素的选择器字符串参数,和一个配置项对象参数(可选):

require(['bs/slider'], function(Slider) {
  // Instantiate a slider
  var mySlider = new Slider("input.slider", {
    // initial options object
  });

  // Call a method on the slider
  var value = mySlider.getValue();

  // For non-getter methods, you can chain together commands
  mySlider
    .setValue(5)
    .setValue(7);
});

建议通过 jQuery 插件的形式使用。

属性 data-provide 将不会再自动生效

因为组件库下使用组件变成了在页面加载后自行 require 的方式,所以组件中通过属性 data-provide 自动初始化的语句在很大情况下将不会再生效,这时,需要我们手动初始化:$('input[data-provide="slider"]').slider()

配置项 #

可以通过 data 属性或 JavaScript 传递配置项参数。对于 data 属性,需要将配置项参数名附着到 data- 后面,例如 data-min="0"。唯一的例外是 formatter 配置项 - 它是一个方法,无法通过 data- 属性的方式初始化。

id #

String

默认值:''

设置滑块组件元素的 ID。

min #

Float

默认值:0

设置滑块组件可以使用的最小值。

max #

Float

默认值:10

设置滑块组件可以使用的最大值。

step #

Float

默认值:1

设置滑块组件的增量步长。

precision #

Float

默认值:step 对应值的小数位数。

计算步长的精度(小数位数)。

orientation #

String

默认值:'horizontal'

滑块组件的排列方向。

可选值为:'vertical''horizontal'

value #

Float | Array

默认值:5

初始值。使用 Array 形式值作为组件的滑块范围。

range #

Boolean

默认值:false

设置滑块范围是否可用。在初始化值是一个数组时可选。初始值是一个值时,默认的最大值将作为第二个范围值。

selection #

String

默认值:'before'

设置已选区域的位置。可选值为:'before', 'after''none'。在一个范围滑块例子中,已选区域为两个范围手柄之间。

tooltip #

String

默认值:'show'

设置自动在拖拽区域显示工具提示,或隐藏工具提示,或始终显示工具提示。对应可选值为:'show', 'hide', 或 'always'

tooltip_split #

Boolean

默认值:false

设为 false 时,只显示一个工具提示。设为 true 时,为每一个滑块手柄添加工具提示。

tooltip_position #

String

默认值:null

工具提示相对于滑块组件的位置。水平排列的滑块组件的可选值为:'top', 'bottom',默认值为 'top';垂直排列的滑块组件的可选值为:'left', 'right',默认值为 'right'

handle #

String

默认值:'round'

滑块手柄的形状。可选值:'round', 'square', 'triangle''custom'

reversed #

Boolean

默认值:false

设置是否逆向显示滑块组件。

rtl #

Boolean | String

默认值:'auto'

设置是否使用 rtl 模式。父层元素含有属性 dir="rtl" 时自动生效。

enabled #

Boolean

默认值:true

设置滑块组件初始是否是可用的。

formatter #

Function

格式化工具提示内容的回调方法。需要返回格式化后字符串文本。如果返回了一个字符串,将指定为属性 aria-valuetext 的值。

natural_arrow_keys #

Boolean

默认值:false

是否支持键盘的上下左右方向键命令。上方向键将针对于垂直排列的滑块组件向上滑动,右方向键将针对于水平排列的滑块组件向右滑动 - 不管滑块组件是否是反向的。默认情况下,上/右方向键用以增加滑块组件的值,下/左方向键用以减少滑块组件的值。

ticks #

Array

默认值:[]

定义滑块的标记值。标记值常用来指示滑块的多个范围值。该配置项将覆盖 minmax 配置项。

ticks_positions #

Array

默认值:[]

定义滑块标记值的百分比位置。第一个值需要设为 0,最后一个值需要设为 100

ticks_labels #

Array

默认值:[]

定义滑块标记值的显示标签文本。可以设置 HTML 内容。

ticks_snap_bounds #

Float

默认值:0

定义标记值的自动附着范围。当滑块组件的当前值距离某个标记值在该范围之内时,滑块将自动定位到该标记值上。

ticks_tooltip #

Boolean

默认值:false

设置是否显示每个标记值的工具提示。

scale #

String

默认值:'linear'

设置刻度类型。设置为 'logarithmic' 时会使用对数刻度计算步长。

focus #

Boolean

默认值:false

设置滑块组件值改变后是否自动聚焦到适当的手柄上。

labelledby #

String | Array

默认值:null

滑块手柄的 ARIA 标签。多个范围值时可以设为数组。

rangeHighlights #

Array

默认值:[]

设置想要加亮显示的范围值的数组。例如:

[{'start':val1, 'end': val2, 'class': 'optionalAdditionalClassName'}]

方法 #

getValue #

参数:无

获取滑块组件的当前值。

setValue #

参数:

为滑块组件设置新值。如果指定 triggerSlideEvent 参数为 true,将会触发 'slide' 事件;如果指定 triggerChangeEvent 参数为 true,将会触发 'change' 事件。参数 newValue 可以设为一个 Number, StringArray 类型的值,如果设为一个 String 类型值,必须要能够转化为一个数字类型,否则会抛出错误。

getElement #

参数:无

获取滑块组件的 div 元素。

destroy #

参数:无

完全清除滑块组件元素并销毁实例。

disable #

参数:无

禁用滑块组件。

enable #

参数:无

启用滑块组件。

toggle #

参数:无

切换滑块组件的禁用和启用状态。

isEnabled #

参数:无

返回滑块组件是否可用(可用返回 true,不可用返回 false)。

setAttribute #

参数:

更新滑块组件的配置项属性值。

getAttribute #

参数:

获取滑块组件的配置项属性的值。

refresh #

参数:无

刷新当前滑块组件。

on #

参数:

为滑块组件添加事件监听。当事件 eventType 发生时,回调方法 callback 将执行。

off #

参数:

移除滑块组件的事件监听。从事件 eventType 上移除回调方法 callback

relayout #

参数:无

重新渲染滑块组件(已初始化过)。常用于滑块组件隐藏并重新显示时。

事件 #

事件名称 描述 event.value
slide 当滑块被拖动时触发 滑块组件的新值
slideStart 当开始拖动滑块时触发 滑块组件的新值
slideStop 当停止拖动滑块时或点击滑块区域后触发 滑块组件的新值
change 当滑块组件值改变后触发。 一个含有两个属性的对象: "oldValue" 和 "newValue"
slideEnabled 当启用滑块组件时触发 N/A
slideDisabled 当禁用滑块组件时触发 N/A

分页 bs/paging #

ID: bs/paging

一款基于 Bootstrap 3 风格的分页插件,提供了一系列参数以支持丰富的定制功能。

当前版本 v1.0.2

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入分页插件依赖。

define(['bs/paging'], function() {
    // Now you can use Paging plugin via .paging() method.
});

当然,也可以直接引入使用。

require(['bs/paging'], function() {
    // Now you can also use Paging plugin via .paging() method.
});

示例 #

示例效果可以前往 分页插件示例 页面查看。

用法 #

分页插件渲染时需要一个用于放置分页 DOM 内容的元素容器,通过对该元素容器的 jQuery 对象调用插件方法 .paging(),即可渲染分页内容。

配置项 totalCount 是必须的,为 0 时将不显示分页内容。

$('#page-wrapper').paging({
    totalCount: 10
});

配置项 #

分页插件支持更多其他用以定制内容的配置项。

size #

String

默认值:'normal'

分页页码显示尺寸。可选值为 sizeMap 中预定义的键(默认为 'large', 'small')。

sizeMap #

PlainObject

默认值:

{
    'large': "pagination-lg",
    'small': "pagination-sm"
}

改变该配置项后可配合样式表自定义其他的尺寸类型。

alignment #

String

默认值:'left'

分页内容的水平对齐方式。另外可选值:'center', 'right'

containerClass #

String

默认值:""

分页内容容器的样式类。可自定义类名并配合样式表实现自制分页样式。

itemContainerClass #

Function

默认值:

function (type, page, current) {
    return (page === current) ? "active" : "";
}

可更改该配置项以实现自定义页码容器的样式类。

itemContentClass #

Function

默认值:

function (type, page, current) {
    return "";
}

可更改该配置项以实现自定义页码链接的样式类。

currentPage #

Number

默认值:1

设置当前显示页码。

numberOfPages #

Number

默认值:5

设置每页显示条目数。

totalCount #

Number

默认值:0

初始化总条目数。

pageUrl #

Function

默认值:

function (type, page, current) {
    return null;
}

自定义页码链接。可通过修改该配置项以指定点击页码按钮时跳转页面。

onPageClicked #

Function

默认值:null

定义点击页码按钮后的回调方法。可结合此配置项自行实现异步内容的渲染。

onPageChanged #

Function

默认值:null

定义页码改变后的回调方法。

shouldShowPage #

Function

默认值:

function (type, page, current) {
    var result = true;
    switch (type) {
        case "first":
            result = (current !== 1);
            break;
        case "prev":
            result = (current !== 1);
            break;
        case "next":
            result = (current !== this.totalPages);
            break;
        case "last":
            result = (current !== this.totalPages);
            break;
        case "page":
            result = true;
            break;
    }
    return result;
}

定义每个页码按钮的显示与否的处理逻辑。

tooltip #

Boolean

默认值:false

设置是否以 工具提示 的形式显示页码按钮的标题提示信息。

tooltipOptions #

PlainObject

默认值:

{
    animation: true,
    html: true,
    placement: 'top',
    selector: false,
    title: "",
    container: false
}

如果配置项 tooltip 设为了 true,则此配置项作为 工具提示的配置项

info #

Boolean

默认值:false

设置是否显示总条目数信息。

currentPageInfo #

Boolean

默认值:false

设置是否显示当前页/总页数信息。

numbers #

Boolean

默认值:false

设置是否显示每页条目数选择框。

numbersList #

Array

默认值:[10, 25, 50, 100]

如果配置项 numbers 设为了 true,则此配置项用以设置每页条目数选择框的可用值。

onPageNumberChanged #

Function

默认值:null

定义每页条目数改变后的回调方法。

dom #

String

默认值:'p'

定义分页内容的 DOM 结构。可以使用以下标志字符:

language #

PlainObject

定义分页内容的显示文本内容。包含以下属性配置项:

page #

Function

默认值:

function (type, page, current) {
    switch (type) {
        case "first":
            return "&lt;&lt;";
        case "prev":
            return "&lt;";
        case "next":
            return "&gt;";
        case "last":
            return "&gt;&gt;";
        case "page":
            return page;
    }
}

定义页码按钮显示文本内容。

tooltip #

Function

默认值:

function (type, page, current) {
    switch (type) {
        case "first":
            return "Go to first page";
        case "prev":
            return "Go to previous page";
        case "next":
            return "Go to next page";
        case "last":
            return "Go to last page";
        case "page":
            return (page === current) ? "Current page is " + page : "Go to page " + page;
    }
}

定义页码按钮的标题提示文本内容。

info #

Function

默认值:

function(numberOfPages, totalPages, totalCount) {
    numberOfPages = parseInt(numberOfPages, 10) || 0;
    totalPages = parseInt(totalPages, 10) || 0;
    var totalEntries = numberOfPages * totalPages;
    if (totalEntries > totalCount) {
        totalEntries = totalCount;
    }
    return 'Total <em>' + totalEntries + '</em> entries';
}

定义总条目数信息文本内容。

currentPageInfo #

Function

function(current, totalPages) {
    current = parseInt(current, 10) || 0;
    totalPages = parseInt(totalPages, 10) || 0;
    return "Pages: " + current + "/" + totalPages;
}

定义当前页/总页数信息文本内容。

numbers #

Function

function(selectHtml, numberOfPages) {
    return "Show " + selectHtml + " entries";
}

定义每页条目数选择框显示文本内容。

方法 #

可以通过 .paging("methodName") 的方式调用分页插件提供的方法。

showNext #

参数:无

显示下一页。

showPrevious #

参数:无

显示上一页。

showFirst #

参数:无

显示第一页。

showLast #

参数:无

显示最后一页。

setCurrentPage #

参数:

显示指定页。

getPages #

参数:无

获取当前页码信息,返回一个对象,包括:

destroy #

参数:无

移除分页内容,销毁分页插件实例。

数字滚动框 bs/spinbox #

ID: bs/spinbox

一个基于 Bootstrap 3 风格的模拟 input[type="number"] 元素的增强数字框组件。支持鼠标滚轮滚动数字。

当前版本 v3.6.3

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入数字滚动框组件依赖。

define(['bs/spinbox'], function() {
    // Now you can use Spinbox plugin via .spinbox() method.
});

当然,也可以直接引入使用。

require(['bs/spinbox'], function() {
    // Now you can also use Spinbox plugin via .spinbox() method.
});

示例 #

示例效果可以前往 数字滚动框示例 页面查看。

用法 #

通过 JavaScript #

通过 JavaScript 调用 Spinbox 插件的形式手动初始化数字滚动框:

$('#mySpinbox').spinbox();

通过 data 属性 #

可以通过为元素添加属性 data-provide="spinbox" 和样式类 .spinbox 在不使用 JavaScript 的情况下自动初始化数字滚动框。

<div id="mySpinbox" class="spinbox" data-provide="spinbox">
  <input type="text" value="1" class="form-control input-mini spinbox-input">
  <div class="spinbox-buttons btn-group btn-group-vertical">
    <button type="button" class="btn btn-default btn-xs spinbox-up">
      <span class="glyphicon glyphicon-chevron-up"></span>
      <span class="sr-only">Increase</span>
    </button>
    <button type="button" class="btn btn-default btn-xs spinbox-down">
      <span class="glyphicon glyphicon-chevron-down"></span>
      <span class="sr-only">Decrease</span>
    </button>
  </div>
</div>

关于属性 data-provide="spinbox"

不同于 滑块组件,数字滚动框组件不涉及元素结构的更改,只是添加了一些事件监听处理,故 data-provide 属性通过 data-api 的方式在事件触发(mousedown, mousewheel)后能够自动初始化组件。

配置项 #

在通过 JavaScript 的方式手动初始化数字滚动框时,可以传入配置项对象参数:

$('#mySpinbox').spinbox({
    // init options
});

value #

Number

默认值:1

数字滚动框初始化值。

min #

Number

默认值:1

数字滚动框允许滚动的最小值。

max #

Number

默认值:999

数字滚动框允许滚动的最大值。

step #

Number

默认值:1

数字滚动框每次滚动时递增/递减的值。

hold #

Boolean

默认值:true

设置按下 递增/递减 按钮时是否保持滚动(自动滚动数字)。为 false 时不自动滚动数字。

speed #

String

默认值:'medium'

设置数字滚动框自动滚动时的速度。可选值:'fast' (100ms), 'medium' (300ms), 'slow' (500ms)。

disabled #

Boolean

默认值:false

设置数字滚动框的禁用状态。自动判断 .spinbox 容器是否含有 .disabled 样式类、其下的输入框和递增/递减按钮是否是 disabled 状态或是否含有 .disabled 样式类,并初始化该配置项。为 true 时不响应鼠标滚轮事件,递增/递减按钮不可用。

units #

Array

默认值:[]

设置数字滚动框内显示的数字的单位。例如:['px', 'en', 'xx'],将允许数字滚动框内的数字显示 px, en, 和 xx 单位。

方法 #

可以通过 .spinbox("methodName") 的方式调用数字滚动框组件提供的方法。

value #

参数:

设置数字滚动框的初始化值。

$('#mySpinbox').spinbox('value', 11);

省略参数 value 时用以获取值:

var value = $('#mySpinbox').spinbox('value');

destroy #

参数:无

销毁数字滚动框。移除事件监听,移除数字框容器及相关控件元素。

$('#mySpinbox').spinbox('destroy');

事件 #

数字滚动框的所有事件都在元素 .spinbox 上触发。

事件名称 描述
changed.bs.spinbox 数字滚动框值改变后触发。回调方法包含事件对象参数 event 和 当前值 value
$('#mySpinbox').on('changed.bs.spinbox', function(event, value) {
    // do something
});

changed 事件触发两次的 Bug

目前组件有一个 bug:在初始化 Spinbox 后改变值时,changed 事件有时会触发两次(初始值触发一次,改变后值触发一次)。解决的方法是禁用 data-api,即 $.off('bs.data-api')

步骤向导 bs/wizard #

ID: bs/wizard

一个基于 Bootstrap 3 风格的显示步骤向导的组件。支持步骤验证、添加新步骤、移除已有步骤等操作。

当前版本 v3.6.3

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入步骤向导插件依赖。

define(['bs/wizard'], function() {
    // Now you can use WizardStep plugin via .wizardStep() method.
});

当然,也可以直接引入使用。

require(['bs/wizard'], function() {
    // Now you can also use WizardStep plugin via .wizardStep() method.
});

示例 #

示例效果可以前往 步骤向导示例 页面查看。

用法 #

通过 JavaScript #

通过 JavaScript 和 jQuery 插件的形式初始化步骤向导组件:

$('#myWizard').wizardStep();

通过 data 属性 #

步骤向导将自动检测含有属性 data-toggle="wizardStep" 的元素并进行初始化。如果相应元素或 data-toggle="wizardStep" 属性标记是在页面加载后动态添加的,则步骤向导会在元素触发 mouseover 事件时自动初始化。

元素标记 #

在步骤列表之外以含有样式类 .wizard-step 的容器元素包裹,并添加属性标记 data-toggle="wizardStep"

<div class="wizard-step" data-toggle="wizardStep" id="myWizard">
    <ul class="steps">
        <li data-step="1" data-name="step1" class="active">
            <span class="badge">1</span>Step1 Label<span class="chevron"></span>
        </li>
        <li data-step="2" data-name="step2">
            <span class="badge">2</span>Step2 Label<span class="chevron"></span>
        </li>
        <li data-step="3" data-name="step3">
            <span class="badge">3</span>Step3 Label<span class="chevron"></span>
        </li>
    </ul>
    <div class="actions">
        <button type="button" class="btn btn-default btn-prev">
            <span class="glyphicon glyphicon-arrow-left"></span>Prev
        </button>
        <button type="button" class="btn btn-default btn-next" data-last="Complete">
            Next<span class="glyphicon glyphicon-arrow-right"></span>
        </button>
    </div>
    <div class="step-content">
        <div class="step-pane active" data-step="1">
            Step1 Content.
        </div>
        <div class="step-pane" data-step="2">
            Step2 Content.
        </div>
        <div class="step-pane sample-pane bg-danger alert" data-step="3">
            Step3 Content.
        </div>
    </div>
</div>

data 属性配置项 #

使用 data 属性配置项时,需要把配置项名称附在 data- 后面,如:data-restrict=""

名称 描述
restrict 'previous' 阻止用户浏览上一步
step 1 设置当前向导步骤数。用一个数字替换该值以在加载时显示对应步骤。

配置项 #

在通过 JavaScript 初始化步骤向导时,可以传入配置项对象参数。

$('#myWizard').wizardStep({
    // init options
});

disablePreviousStep #

Boolean

默认值:false

设置是否禁止浏览上一步。设为 true 将使禁用上一步按钮。

stepIndex #

Number | String

默认值:-1

使用默认值 -1 时将自动查找其下含有 .active 样式类的元素以设置当前步骤数。若为 Number 类型,将对应 data-step 属性查找;若为 String 类型,将对应 data-name 属性查找。

height #

Number | String

默认值:'auto'

设置步骤向导组件的整体高度。默认值 'auto' 下将自动适应。另可设为有效的数值或字符串。

minHeight #

Number | String

默认值:0

设置步骤向导组件的整体最小高度。默认值 0 时不设置。另可设为有效的数值或字符串。

orient #

String

默认值:'horizontal'

默认情况下,步骤向导的菜单和内容以上下结构的效果水平排列显示。另可设为 'vertical',会使菜单和内容以左右结构的效果垂直排列。

formMode #

Boolean

默认值:false

是否启用表单模式。设为 true 时最后一步将显示提交按钮。提交按钮需在 class="actions" 元素下自行添加,并含有样式类 .btn-submit

formSubmitting #

PlainObject

默认值:false

步骤向导提交表单时的配置项,可包含以下配置项属性:

steps #

Array

默认值:[]

设置(最后一步除外)可提交的步骤数。每项可为 data-stepdata-name 对应的值。

ajaxOptions #

String | PlainObject

默认值:null

提交表单时的 Ajax 参数。若为 String 类型,将作为提交的地址;若为 PlainObject 类型,则同 jQuery 的 Ajax 配置项。

validations #

PlainObject

设置每个步骤下的表单的验证校验方法。如:

{
    '[stepIndex]': function($stepPane) {

    }
}

属性键 stepIndex 可为 data-stepdata-name 对应的值。方法内的 this 指针指向当前的步骤向导实例对象;传入参数 $stepPane 为当前步骤内容容器元素的 jQuery 对象。

校验方法需要返回 truefalse,以指定当前步骤下的表单的校验状态。校验状态为 false 的步骤将不能前往下一步。

{
    '[stepIndex]': function($stepPane) {
        // 执行一些校验操作
        // ... ...
        // 返回 false 则表示校验不通过,不能前往下一步
        return false;
    }
}

一个实际例子:

{
    '0': function($stepPane) {
        var $form = $('form:first', $stepPane);
        return $form.valid();
    }
}

如果校验操作是一个需要异步请求的过程,则需要使用 jQuery 的 Deferred 方法,返回一个表示延迟处理过程的 Promise 对象:

{
    '[stepIndex]': function($stepPane) {
        var def = $.Deferred();
        // 模拟一个延迟处理过程,实际情况可能是一个 Ajax 请求
        setTimeout(function() {
            // 执行 resolve 时传入 true 或 false,等同于上面的 return true 或 false
            def.resolve(false);
        }, 500);
        return def.promise();
    }
}
action #

Function

默认值:null

自定义提交操作。方法的 this 指针指向当前的步骤向导实例对象。

success #

Function

默认值:null

在设置 action 配置项时无效。定义提交成功后的回调方法,方法的 this 指针指向当前的步骤向导实例对象。也可写在 ajaxOptions 配置项内。

error #

Function

默认值:null

在设置 action 配置项时无效。定义提交失败后的回调方法,方法的 this 指针指向当前的步骤向导实例对象。也可写在 ajaxOptions 配置项内。

onchanged #

Function

默认值:null

步骤向导的步骤改变时的回调方法。在回调方法中,其 this 指针指向当前的步骤向导实例对象; 第一个参数为当前步骤信息对象,格式为 {step: [step], name: [name]},其中 step 属性为当前步骤数,name 属性为当前步骤名称(如果定义了名称)。

方法 #

可以通过 .wizardStep('methodName') 的方式调用步骤向导实例提供的方法。

previous #

参数:无

回顾上一步。

$('#myWizard').wizardStep('previous');

next #

参数:无

前往下一步。

$('#myWizard').wizardStep('next');

selectStep #

参数:

选中并显示指定步骤内容。

$('#myWizard').wizardStep('selectStep', 3);

$('#myWizard').wizardStep('selectStep', "named item");

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略参数 stepIndex 时,返回当前步骤数。

var step = $('#myWizard').wizardStep('selectStep');

addSteps #

参数:

在指定位置添加一个或多个步骤。步骤内容会自动包裹在 <div class="step-pane"></div> 元素内。

$('#myWizard').wizardStep('addSteps', index, [
    {
        name: 'Step name',
        badge: 'badge-customicon',
        label: 'A Step Label',
        pane: '<div>Content</div>'
    }
]);

参数 index 是必选项,添加到第一步应设为 1。如果设为 -1,添加的步骤内容将自动加在步骤向导末尾。

参数 steps 指定要添加的步骤信息,为包含一项或多项对象的数组。对象可包含以下属性内容:

removeSteps #

参数:

移除指定的一个或多个步骤,返回移除的步骤的信息列表 [item1, ..., itemX]

$('#myWizard').wizardStep('removeSteps', index, howMany);

参数 index 是必选项,从第一步开始移除应设为 1

参数 howMany 是可选项,默认为 1

getStep #

参数:

获取指定步骤对应的菜单的 jQuery 对象。

var $step = $('#myWizard').wizardStep('getStep', 1);

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略 stepIndex 参数时,获取当前步骤对应的菜单的 jQuery 对象。

var $step = $('#myWizard').wizardStep('getStep');

getStepPane #

参数:

获取指定步骤对应的步骤内容的 jQuery 对象。

$('#myWizard').wizardStep('getStepPane', 1);

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略 stepIndex 参数时,获取当前步骤对应的步骤内容的 jQuery 对象。

$('#myWizard').wizardStep('getStepPane');

setStepPane #

参数:

重新设置指定步骤下的内容。

$('#myWizard').wizardStep('setStepPane', dom, stepIndex)

参数 dom 可为字符串、DOM对象或者jquery对象。

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略 stepIndex 参数时,重新设置当前步骤下的内容。

$('#myWizard').wizardStep('setStepPane', dom);

setSubmitStep #

参数:

设置指定步骤的可提交状态。

$('#myWizard').wizardStep('setSubmitStep', stepIndex, enable)

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。另外多个步骤时可设为包含相应项的数组。

参数 enable 设置指定步骤是否可以提交,默认为 true

serializeObject #

参数:

将指定步骤及之前步骤下的表单内容序列化为 JSON 对象,键为表单控件的name,值为表单控件的值。

var formJSONData = $('#myWizard').wizardStep('serializeObject', stepIndex)

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略 stepIndex 参数时,默认为当前步骤。

serializeArray #

参数:

将指定步骤及之前步骤下的表单内容序列化为数组,每项类似于 {name: "", value: xxx}

var formArrayData = $('#myWizard').wizardStep('serializeArray', stepIndex)

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略 stepIndex 参数时,默认为当前步骤。

serialize #

参数:

将指定步骤及之前步骤下的表单内容序列化为 url 参数,即类似于 name1=value1&name2=value2 的字符串。

var formParamData = $('#myWizard').wizardStep('serialize', stepIndex)

参数 stepIndex 为 Number 类型时对应 data-step 值,为 String 类型时对应 data-name 值。

省略 stepIndex 参数时,默认为当前步骤。

destroy #

移除步骤向导的回调方式,绑定事件和 DOM 元素结构。返回 DOM 控件字符串。

事件 #

步骤向导的所有事件都在元素 .wizard-step 上触发。

事件名称 描述
actionclicked.bs.wizard 在步骤改变,但改变后的新步骤还没显示时立即触发。可以使用 event.preventDefault() 取消事件。回调方法传入参数 event, datadata 是一个对象,规则如 { step:1, direction:'next' }
changed.bs.wizard 在步骤改变且新步骤内容显示出来后触发。
finished.bs.wizard 当在最后一步点击 "下一步" 按钮时触发。
stepclicked.bs.wizard 当点击一个已完成的步骤时触发。可以使用 event.preventDefault 取消事件。
$('#myWizard').on('actionclicked.bs.wizard', function (evt, data) {
    // do something
});

jQuery插件组件 ( 14 ) #

jQuery 迁移 jq/migrate #

ID: jq/migrate

jQuery 官方提供的兼容 1.9 以下版本的迁移插件,如果你当前是旧项目且大量使用了 1.9 以下版本的 jQuery,这个插件会帮助你的项目代码向使用组件库过渡。

当前版本 1.2.1

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 jQuery Migrate 插件依赖。

define(['jq/migrate'], function() {
    // Now you can use jQuery Migrate plugin.
});

当然,也可以直接引入使用。

require(['jq/migrate'], function() {
    // Now you can also use jQuery Migrate plugin.
});

说明 #

关于 1.9 以下版本的 jQuery 与组件库中的 jQuery 不兼容说明,可以查阅 jQuery 1.9版本说明 章节。也可参考官方地址 1.9 版本升级指南

URL解析 jq/urlp #

ID: jq/urlp

一个将 URL 字符串解析成对象信息的插件。

当前版本 1.0.4。原组件官方地址 On GitHub

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 URL 解析插件依赖。

define(['jq/urlp'], function() {
    // Now you can use URL Parser plugin via .urlp() method.
});

当然,也可以直接引入使用。

require(['jq/urlp'], function() {
    // Now you can also use URL Parser plugin via .urlp() method.
});

URL 命名规则 #

URL 解析插件将一个 URL 字符串划分成了以下部分进行解析:

http://username:password@www.example.com:443/path/file.name?query=string#anchor
|_____||______| |______| |_____________| |_||_____________||___________||_____|
   |       |       |           |          |         |             |         |
scheme   user   password      host       port      path         query   fragment
|______________________________________________________________________________|
                                       |
                                      url

示例 #

获取和设置元素的 url:

$("a").urlp("url");
$("a").urlp("url", "http://www.example.com/");

获取和设置元素的各部分内容:

$("a").urlp("scheme");
$("a").urlp("scheme", "https://");

$("a").urlp("host");
$("a").urlp("host", "www.example.com");

$("a").urlp("port");
$("a").urlp("port", "8080");

$("a").urlp("path");
$("a").urlp("path", "../file.name");

$("a").urlp("query");
$("a").urlp("query", {"param":"value"});

$("a").urlp("fragment");
$("a").urlp("fragment", "elementid");

过滤各部分内容:

$("a").urlp("filter", "scheme", "^=", "http")
      .urlp("filter", "host", "=", "www.example.com")
      .urlp("filter", "port", "!=", "8080")
      .urlp("filter", "path", "$=", ".html")
      .urlp("filter", "query", "*=", "param=value")
      .urlp("filter", "fragment", "regex", /(\#)/);

通过选择器监控一个新元素:

$("a:eq(0)").urlp("watch", function(element, selector){})
            .urlp("filter", "host", "=", "www.example.com")
            .urlp("query",{"found":"example"});

$("body").prepend("<a href='http://www.example.com/'></a>");

$("a:eq(0)").urlp("unwatch");

解析一个元素的文本内容中的 URLs 并创建/返回链接元素:

$("<div>www.example.com</div>").urlp();

获取一个用以解析/操作 URL 的接口对象,并进行相关操作:

var url = $.urlp("http://www.example.com:80/path/file.name?param1=value1#fragment");

// 获取一个包含各部分信息的对象
url.url();

// 获取 URL scheme
url.scheme();

// 获取 URL user name
url.user();

// 获取 URL password
url.password();

// 获取 URL host
url.host();

// 获取 URL port
url.port();

// 获取 URL path
url.path();

// 获取 URL query
url.query();

// 获取一个指定的 URL 参数
url.query().param1;

// 获取 URL fragment
url.fragment();

// 设置整个 URL
url.url("http://www.example.com:80/path/file.name?param1=value1#fragment");

// 设置 URL scheme.
url.scheme("https://");

// 设置 URL user name.
url.user("user");

// 设置 URL password.
url.password("password");

// 设置 URL host.
url.host("www.newexample.com");

// 设置 URL port.
url.port("80");

// 设置 URL path.
url.path("/newpath/newfile.file");

// 添加到 URL path.
url.path("./newfile.file");

// 移除两层 URL path.
url.path("../../newfile.file");

// 设置 URL query.
url.query("?param=value");

// 添加/更改 the URL query (string or object)
url.query("param=value");
url.query({"param":"value"});

// 移除 URL query
url.query("");
url.query({});

// 设置 URL fragment.
url.fragment("#newfragment");

参数和返回值 #

解析 URL 时,可以传入一个 URL 字符串或一个对象:

$.urlp("http://www.example.com:8080/path/file.name?query=string#anchor");

等效于

$.urlp({
    scheme: "http://"
    user: "username",
    password: "password",
    host: "www.example.com",
    port: "8080",
    path: "/path/file.name",
    query: "?query=string",
    fragment: "#anchor"
});

解析返回值可以通过 toString() 方法转换成字符串:

// Parse the document.location.href URL, and convert it back to a string again.
$(document).urlp("url").toString();

用法 #

解析 document.location.href #

可以通过 document 元素对象解析 document 的 URL:

// Parse the document.location.href URL string into a URL object
$(document).urlp("url");

类似地,也可以通过该插件更改 document 的 URL。但要注意的是,直接设置 url 并不会真正改变 document.location.href,只是将新的 url 值保存在了 document 元素的 data-href 属性上,需要使用 goto 方法更新 document.location.href 的值。

// Does not modify document.location.href (updates $(document).data("href"))
$(document).urlp("url", "www.example.com");

// Does modify document.location.href (from $(document).data("href"))
$(document).urlp("goto");

解析元素的 hrefsrc 属性 #

URL 解析插件可以用过元素的属性 hrefsrc(例如 <a href="">, <base href="">, <link href="">, <img src="">, <script src=""><iframe src="">)解析 URL:

// Parse all anchor element URLs into an array
$("a").urlp("url");

对于解析出来的 URL 的任意更改都将直接改变元素的 hrefsrc 属性的值。如果想要访问元素对应的链接,可以在元素的 jQuery 对象上调用 goto 方法:

// Directly set the first anchor elements URL, and then goto it!
$("a:eq(0)").urlp("url", "www.example.com").urlp("goto");

解析元素的内容 #

对于不含属性 hrefsrc 的元素,URL 解析插件会查找元素的内容中含有的 URL 字符串文本并解析,然后把对应的 URL 文本替换成链接元素:

// Parse the HTML for URLs, and convert all URLs found in the text to anchors.
$("<div>Here are URLs: www.example1.com, www.example2.com</div>").urlp();

// HTML becomes:
// <div>
//     Here are URLs:
//     <a href="http://www.example1.com/" class="urlp-no-watch">www.example1.com</a>,
//     <a href="http://www.example2.com/" class="urlp-no-watch">www.example2.com</a>
// </div>

解析 URL 字符串 #

可以直接解析、更改或监控一个任意的 URL 字符串:

// Get an interface for parsing the document URL...
var url = $.urlp();

// .. or get an interface for parsing your own URL.
url = $.urlp("www.example.com");

// Parse the URL to an object.
url.url();

// Get the URL scheme.
url.scheme();

// Get the URL host.
url.host();

// Get the URL port.
url.port();

// Get the URL path.
url.path();

// Get the URL query.
url.query();

// Get a specific parameter value from the URL query.
url.query().parameter;

// Get the URL fragment.
url.fragment();

// Create a watch for new URLs that contain "example.com" in the host name
var watch = $.urlp("example.com").watch(function(element, selector){
    console.log("Found example.com URL!", element, selector);
});

// We can even apply filters to the watch to be sure!
watch.urlp("filter", "host", "*=", "example.com");

// Append a new URL, which will trigger the watch
$("body").append("<a href=\"www.example.com\"></a>");

// Stop watching for "example.com" URLs.
watch.urlp("unwatch");

解析未知情况 #

未知的协议 #

有时,URL 解析插件会接受一些非法的 URL 参数,比如 spotify:track:<trackid>。这种情况下,解析插件会返回:

{
    scheme: "spotify:",
    url: "track:<trackid>"
}

类似这种未知的 URL 返回值会经常包含协议,用以执行过滤操作,同时也包含方法 toString(),用以转换成原本的 URL 字符串。

邮件协议 #

使用邮件协议 "mailto:" 的 URL 会被当作一个合法的 URL 解析。例如:

{
    scheme: "mailto:"
    user: "username",
    password: "",
    host: "www.example.com",
    port: "",
    path: "",
    query: "?subject=subject&body=body",
    fragment: ""
}

但要注意的是,使用邮件协议的 URL 无法设置密码 (password)、端口 (port) 或 锚点 (fragment)。

javascript脚本 #

执行 JavaScript 脚本的 URL 也可以被当作一个合法的 URL 解析。例如:

{
    scheme: "javascript:"
    user: "",
    password: "",
    host: "www.example.com",
    port: "",
    path: "/",
    query: "",
    fragment: "",
    javascript: "alert('!');"
}

需要注意的是,document.location.href 会始终作为主要的 URL 对象被解析/返回。

下拉框增强 jq/chosen #

ID: jq/chosen

一个使下拉框具有统一样式,且更易使用的组件。

当前版本 1.4.2。原组件官方地址 On GitHub,以及原文档地址 On GitHub Pages

组件库调整

组件库内的 Chosen 组件在 1.4.2 版本基础上添加几个重要的功能,暂不考虑和原组件同步更新。包括:

  • 支持配置项 allow_add_nomatch_result,设为 true时能够手动添加未匹配的搜索内容。

  • 支持配置项 results_fixed ,设为 true 时提示结果将相对于外层文档固定定位。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入下拉框增强插件依赖。

define(['jq/chosen'], function() {
    // Now you can use Chosen plugin via .chosen() method.
});

当然,也可以直接引入使用。

require(['jq/chosen'], function() {
    // Now you can also use Chosen plugin via .chosen() method.
});

示例 #

示例效果可以前往 下拉框增强插件示例 页面查看。

用法 #

通过 JavaScript #

通过 JavaScript 和 jQuery 插件的形式初始化下拉框增强组件:

$('input[name="my_select"]').chosen();

data 属性配置项 #

下拉框增强插件能够自动识别原下拉框的一些属性值并做适应性的初始化。

<select class="my_select_box" data-placeholder="Select Your Options">
    <option value="1">Option 1</option>
    <option value="2" selected>Option 2</option>
    <option value="3" disabled>Option 3</option>
</select>
属性名称 描述
data-placeholder 当显示空内容时插件会自动以该属性的值代替。如果没有设置该属性,单选下拉框会默认显示 "Select an Option",多选下拉框会默认显示 "Select Some Options"。
注:单选下拉框下如果没有指定选中某项,浏览器会默认选中第一项,如果想要让默认文本内容生效,需要在下拉列表开始添加一个空白项。
multiple 插件会自动识别下拉框的 multiple 属性,并初始化成多选下拉框。
selected, disabled 插件会自动识别和高亮显示已选和已禁用的选项。

class 配置项 #

下拉框增强插件能够自动识别原下拉框的一些 class 样式类并做适应性的初始化。

<select class="my_select_box chosen-rtl">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>
样式类名称 描述
chosen-rtl 为原下拉框添加样式类 chosen-rtl 可以使插件下拉框从右向左显示内容。
注:样式类 chosen-rtl 只有在配置项 inherit_select_classes 设为 false 才能生效。

配置项 #

通过 JavaScript 使用下拉框增强插件时,可以传入配置项对象参数:

$('input[name="my_select"]').chosen({
    // init options
});

width #

String

下拉框增强控件的宽度。同 CSS 的 width 属性。

allow_single_deselect #

Boolean

默认值:false

设为 true 时,插件会在下拉框内部添加一个用以清空选择内容的按钮元素,需要下拉列表的第一个选择项为空值。

disable_search_threshold #

Number

默认值:0

设置单选下拉框下自动隐藏搜索框的选项数的阈值。即当选项数比设定值小时,将自动隐藏搜索框。默认为 0 时不起作用。

Boolean

默认值:false

设置是否禁用并隐藏搜索框功能(只对单选下拉框有效)。

Boolean

默认值:true

是否启用自动分割搜索字符串中的空格并转换为多个搜索匹配内容的功能。如 "aaa bbb" 在默认情况下不匹配整个字符串,而分别匹配 "aaa""bbb"

搜索框内支持输入正则表达式字符串。

Boolean

默认值:true

设置是否支持对搜索结果分组。

search_contains #

Boolean

默认值:false

设置搜索时是否支持匹配子内容的功能。默认从头开始匹配。

single_backstroke_delete #

Boolean

默认值:true

默认情况下,在多选下拉框下按下键盘的 DeleteBackspace 键将移除上一个已选项。设为 false 时,按第一次键将高亮显示上一个已选项,按第二次时将移除。

max_selected_options #

Number

默认值:Infinity

限制用户可以选择的最多项数。当达到该限制数时,将触发 chosen:maxselected 事件。

inherit_select_classes #

Boolean

默认值:false

设为 true 时,插件将获取原下拉框的 class 样式类并添加到下拉框插件容器元素上。

display_selected_options #

Boolean

默认值:true

默认情况下,插件显示搜索结果时包含已选项。设为 false 时,搜索结果将忽略已选项。

注:该配置项只在多选下拉框下生效,单选下拉框下始终显示已选项。

display_disabled_options #

Boolean

默认值:true

默认情况下,插件显示搜索结果时包含已禁用项。设为 false 时,搜索结果将忽略已禁用项。

include_group_label_in_selected #

Boolean

默认值:false

默认情况下,插件只显示已选项对应的文本内容。设为 true,插件将同时显示已选项对应的分组(如果有)的文本内容。

allow_add_nomatch_result #

Boolean

默认值:false

设为 true 时,支持在未搜索到查找内容时,插件会在提示文本后面自动添加“添加”按钮,点击后会动态将搜索内容作为新的列表项添加到下拉列表末尾,新加项的显示文本和对应值均为搜索内容文本。

results_fixed #

Boolean

默认值:false

为了解决在模态框内的下拉框占用模态框内容高度导致显示滚动条和操作不便的问题,暂添加了此配置项。设为 true 时,插件下拉框将相对于最外层的文档进行固定定位。

方法 #

在对一个下拉框控件使用 Chosen 组件初始化后,即可以通过该控件元素的 jQuery 对象调用 Chosen 组件提供的一些方法。

$('#my_select_box').chosen('destroy');

destroy #

销毁 Chosen 组件并还原回原下拉框控件。

事件 #

下拉框插件会触发几个可以通过原下拉框元素监听的自定义事件。

$('.my_select_box').on('change', function(evt, params) {
    // do something
});
事件名称 描述
change 当选择或取消选择任意项时都会触发该事件(同时会传递一个 selecteddeselected 参数告诉你是触发了哪种改变事件)。
注:selecteddeselected 参数不可以通过原型链的方式使用。
chosen:ready 在下拉框插件完全初始化后触发。
chosen:maxselected 在设置 max_selected_options 并且相应值被超出时触发。
chosen:showing_dropdown 在插件下拉框打开后触发。
chosen:hiding_dropdown 在插件下拉框关闭后触发。
chosen:no_results 当搜索结果返回空内容时触发。

注:下拉框插件所有的自定义事件(以 chosen: 开头)在回调方法内都会传入一个下拉框插件对象作为参数。

下拉框插件还包含几个可以通过原下拉框元素手动触发的事件。

// tell Chosen that a select has changed
$('.my_select_box').trigger('chosen:updated');
事件名称 描述
chosen:updated 该事件应在插件选择项改变后触发(比如在触发 change 事件后)。
chosen:activate 触发当聚焦到一个标准的 select 元素上时,插件在手动直接点击 select 元素时将自动开始捕获键盘事件的功能。
chosen:open 触发显示插件下拉框。
chosen:close 触发关闭插件下拉框。

双列选择框 jq/multipicker #

ID: jq/multipicker

一个分为左右两列选择区域的选择框组件。

当前版本 v0.8.2

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入双列选择框组件依赖。

define(['bs/multipicker'], function() {
    // Now you can use MultiPicker plugin via .multiPicker() method.
});

当然,也可以直接引入使用。

require(['bs/multipicker'], function() {
    // Now you can also use MultiPicker plugin via .multiPicker() method.
});

示例 #

示例效果可以前往 双列选择框示例 页面查看。

用法 #

通过 JavaScript #

通过 JavaScript 和 jQuery 插件的形式初始化双列选择框组件:

$('#multipicker').multiPicker();

配置项 #

通过 JavaScript 使用双列选择框组件时,可以传入配置项对象参数:

$('#multipicker').multiPicker({
    // init options
});

height #

Number | String

默认值:'auto'

双列选择框的高度。默认情况下根据 minHeightmaxHeight 自适应。设为 Number 类型时默认单位为像素(px),设为 String 类型时同 CSS 的 height 属性。

minHeight #

Number | String

默认值:300

双列选择框的最小高度。height 为默认值时生效。设为 Number 类型时默认单位为像素(px),设为 String 类型时同 CSS 的 min-height 属性。

maxHeight #

Number | String

默认值:400

双列选择框的最大高度。height 为默认值时生效。设为 Number 类型时默认单位为像素(px),设为 String 类型时同 CSS 的 max-height 属性。

fromColumn #

PlainObject

默认值:

{
    title: "可选栏",
    cssClass: "col-sm-6",
    items: [],
    loadText: "加载更多",
    loadingText: "正在加载...",
    loadErrorText: "加载失败!点击重新加载",
    loadEmpty: "没有更多项了",
    loadMore: null
}

待选列的相关配置。可设置以下属性配置项:

title #

String

默认值:'可选栏'

待选列的标题。

cssClass #

String

默认值:'col-sm-6'

待选列容器元素的样式类。

items #

Array

默认值:[]

待选列的初始化数据。每项可为 String 类型或 Object 类型,为 Object 类型时,必须含有属性 name(将作为当前项的名称显示在框内)。

loadMore #

Function

默认值:null

待选列下(异步)加载更多项的处理方法。传入当前项总数参数,需要返回 jQuery 的 Ajax 对象或一个延迟对象 Promise。方法的 this 指针指向当前双列选择框对象实例。下面是一个使用示例:

var fromCount = 0;
function(num) {
    if (num >= 6) {
        this.doneMoreFrom();
        return false;
    }
    var def = $.Deferred();
    // 模拟异步 ajax
    setTimeout(function() {
        // 如果没有更多数据,可以 resolve(null) 或 resolve([])
        def.resolve([
            "item1" + fromCount, "item2" + fromCount
        ]);
        fromCount ++;
    }, 1500);
    return def.promise();
}
loadText #

String

默认值:'加载更多'

待选列下(异步)加载更多项的按钮文本内容。

loadingText #

String

默认值:'正在加载...'

待选列下(异步)加载更多项的按钮在异步过程中的显示文本内容。

loadErrorText #

String

默认值:'加载失败!点击重新加载'

待选列下(异步)加载更多项的按钮在异步过程出错后的显示文本内容。

loadEmpty #

String

默认值:'没有更多项了'

待选列下(异步)加载更多项的按钮在异步过程返回空数据后的显示文本内容。

toColumn #

PlainObject

默认值:

{
    title: "已选栏",
    cssClass: "col-sm-6",
    items: [],
    loadText: "加载更多",
    loadingText: "正在加载...",
    loadErrorText: "加载失败!点击重新加载",
    loadEmpty: "没有更多项了",
    loadMore: null
}

已选列的相关配置。可设置以下属性配置项:

title #

String

默认值:'已选栏'

已选列的标题。

cssClass #

String

默认值:'col-sm-6'

已选列容器元素的样式类。

items #

Array

默认值:[]

已选列的初始化数据。每项可为 String 类型或 Object 类型,为 Object 类型时,必须含有属性 name(将作为当前项的名称显示在框内)。

loadMore #

Function

默认值:null

已选列下(异步)加载更多项的处理方法。传入当前项总数参数,需要返回 jQuery 的 Ajax 对象或一个延迟对象 Promise。方法的 this 指针指向当前双列选择框对象实例。下面是一个使用示例:

var toCount = 0;
function(num) {
    if (num >= 6) {
        this.doneMoreTo();
        return false;
    }
    var def = $.Deferred();
    // 模拟异步 ajax
    setTimeout(function() {
        if (toCount > 2) {
            // 如果请求数据失败,可以 reject(-1)
            def.reject(-1);
            toCount = 2;
        } else {
            // 如果没有更多数据,可以 resolve(null) 或 resolve([])
            def.resolve([
                "item_1" + toCount, "item_2" + toCount
            ]);
            toCount ++;
        }
    }, 1500);
    return def;
}
loadText #

String

默认值:'加载更多'

已选列下(异步)加载更多项的按钮文本内容。

loadingText #

String

默认值:'正在加载...'

已选列下(异步)加载更多项的按钮在异步过程中的显示文本内容。

loadErrorText #

String

默认值:'加载失败!点击重新加载'

已选列下(异步)加载更多项的按钮在异步过程出错后的显示文本内容。

loadEmpty #

String

默认值:'没有更多项了'

已选列下(异步)加载更多项的按钮在异步过程返回空数据后的显示文本内容。

dataSrc #

String | Array

默认值:null

设置获取双列选择框数据时的过滤键。只对 Object 类型的数据项有效。

$("#multipicker").multiPicker({
    dataSrc: 'id',
    fromColumn: {
        items: [
            {
                name: "item1",
                id: "1",
                key1: "value1"
            }, 
            {
                name: "item2",
                id: "2",
                key1: "value1"
            }, 
            {
                name: "item3",
                id: "3",
                key1: "value1"
            }, 
            {
                name: "item4",
                id: "4",
                key1: "value1"
            }, 
            {
                name: "item5",
                id: "5",
                key1: "value1"
            }
        ]
    }
});

var unSelectData = $("#multipicker").multiPicker('getUnSelectedData');
// returns ['1', '2', '3', '4', '5']

可以设为一个数组,以过滤多个属性值:

$("#multipicker").multiPicker({
    dataSrc: ['id', 'key1'],
    fromColumn: {
        items: [
            {
                name: "item1",
                id: "1",
                key1: "value1"
            }, 
            {
                name: "item2",
                id: "2",
                key1: "value1"
            }, 
            {
                name: "item3",
                id: "3",
                key1: "value1"
            }, 
            {
                name: "item4",
                id: "4",
                key1: "value1"
            }, 
            {
                name: "item5",
                id: "5",
                key1: "value1"
            }
        ]
    }
});

var unSelectData = $("#multipicker").multiPicker('getUnSelectedData');
// returns [{id: '1', key1: "value1"}, {id: '2', key1: "value1"}, {id: '3', key1: "value1"}, {id: '4', key1: "value1"}, {id: '5', key1: "value1"}]

oncreated #

Function

双列选择框初始化完成后的回调方法。传入事件对象参数 event,方法的 this 指针指向当前双列选择框对象实例。

onchanged #

Function

选择或取消选择任一项后,已选列内容相对于初始化时有改变时的回调方法。传入事件对象参数 event,方法的 this 指针指向当前双列选择框对象实例。

onselected #

Function

从待选列选择一项到已选列后的回调方法。传入事件对象参数 event,方法的 this 指针指向当前双列选择框对象实例。

ondeselected #

Function

从已选列取消选择一项到待选列后的回调方法。传入事件对象参数 event,方法的 this 指针指向当前双列选择框对象实例。

方法 #

可以通过双列选择框实例或元素的 jQuery 对象接口调用双列选择框提供的一些方法。

var unSelectData = $("#multipicker").multiPicker('getUnSelectedData');

setHeight #

参数:

动态设置双列选择框的高度。参数 height 同配置项 height

setMinHeight #

参数:

动态设置双列选择框的最小高度。参数 minHeight 同配置项 minHeight

setMaxHeight #

参数:

动态设置双列选择框的最大高度。参数 maxHeight 同配置项 maxHeight

isChanged #

参数:无

判断已选列的内容相对于初始化时的内容是否有改变。返回 true|false。

addUnSelectedItems #

参数:

动态添加待选列的内容项。参数 items 同配置项 fromColumn.items

addSelectedItems #

参数:

动态添加已选列的内容项。参数 items 同配置项 toColumn.items

setUnSelectedItems #

参数:

动态设置(替换)待选列的内容项。参数 items 同配置项 fromColumn.items

setSelectedItems #

参数:

动态设置(替换)已选列的内容项。参数 items 同配置项 toColumn.items

getUnSelectedItems #

参数:无

获取待选列的内容项列表(包含组件附加属性内容)。

getSelectedItems #

参数:无

获取已选列的内容项列表(包含组件附加属性内容)。

getUnSelectedData #

参数:无

获取待选列的内容项的数据列表(不包含组件附加属性内容)。

getSelectedData #

参数:无

获取已选列的内容项的数据列表(不包含组件附加属性内容)。

getUnSelectedElements #

参数:无

获取待选列的内容项对应的 HTML 元素(li)的列表。

getSelectedElements #

参数:无

获取已选列的内容项对应的 HTML 元素(li)的列表。

searchFrom #

参数:

手动触发待选列的搜索功能。参数 keyword 为搜索关键字,省略参数时默认获取搜索框的值作为搜索关键字。

searchTo #

参数:

手动触发已选列的搜索功能。参数 keyword 为搜索关键字,省略参数时默认获取搜索框的值作为搜索关键字。

loadMoreFrom #

参数:无

手动触发待选列的(异步)加载更多项的功能。

loadMoreTo #

参数:无

手动触发已选列的(异步)加载更多项的功能。

loadingMoreFrom #

参数:无

手动触发待选列的(异步)加载更多项的加载过程提示。

loadingMoreTo #

参数:无

手动触发已选列的(异步)加载更多项的加载过程提示。

loadedMoreFrom #

参数:无

手动触发待选列的(异步)加载更多项的加载完成提示。

loadedMoreTo #

参数:无

手动触发已选列的(异步)加载更多项的加载完成提示。

errorMoreFrom #

参数:无

手动触发待选列的(异步)加载更多项的加载错误提示。

errorMoreTo #

参数:无

手动触发已选列的(异步)加载更多项的加载错误提示。

doneMoreFrom #

参数:无

手动触发待选列的(异步)加载更多项的加载完成且返回空数据的提示。

doneMoreTo #

参数:无

手动触发已选列的(异步)加载更多项的加载完成且返回空数据的提示。

表格增强 jq/dataTables #

ID: jq/dataTables

DataTables 是一款 jQuery 表格增强插件。它是一个高度灵活的工具,可以为任何HTML表格添加高级的交互功能。

当前版本 v1.10.7。原组件中文网 DataTables 中文网,以及官网 DataTables

组件库调整

组件库内的 DataTables 插件在 1.10.7 版本基础上添加几个重要的功能,暂不考虑和原组件同步更新。包括:

  • 添加并完善了设置表格每列最小宽度的功能。即使用配置项 minWidth,支持数字、百分比、em单位等

  • 表格自适应宽度列添加了最小宽度不能小于一个字宽度的设置

  • 修复了缩放浏览器窗口后重新计算列宽时传入的 oSettings 参数不是最新的问题

  • 修复了使用 fixedColumns 扩展时左右两侧固定列定位不准确的问题

  • 修复了计算表格滚动条时因浏览器(chrome)的 1px 误差导致滚动条无法正常显示的问题

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入表格增强插件依赖。

define(['jq/dataTables'], function() {
    // Now you can use DataTables plugin via .dataTable() or .DataTable() method.
});

当然,也可以直接引入使用。

require(['jq/dataTables'], function() {
    // Now you can also use DataTables plugin via .dataTable() or .DataTable() method.
});

Bootstrap 风格

组件库封装了适合全局样式的 Bootstrap 风格的 DataTables 扩展插件,使用时代替 'jq/dataTables',引入 'jq/dataTables-bs3' 即可。

示例 #

示例效果可以前往 表格增强插件示例 页面查看。

另外,在 DataTables 中文网 中可以查阅更多更丰富的使用案例。

用法 #

零配置初始化 #

DataTables 默认情况下已启用了一些功能,如搜索、排序、分页等,对页面上已显示的一个表格元素的 jQuery 对象调用 .dataTable() 方法即可快速初始化:

$('#table-example').dataTable();

实例对象 #

默认的初始化方法 .dataTable() 返回的是当前表格元素的 jQuery 对象;另外可以使用 .DataTable() 方法初始化表格,该方法返回 DataTables 的实例对象,可以通过它来操作 DataTables 的 API 方法。

var tableApi = $('#table-example').DataTable();

功能启用/禁用 #

如果你不想使用 DataTables 的某项特性,那么你可以禁用它,比如只启用查找功能(默认是启用的):

$('#table-example').dataTable({
    "paging":   false,
    "ordering": false,
    "info":     false
});

复杂的表头 #

在使用表格的时候总会遇到要分组列的情况,DataTables 完全支持合并列/合并行。

下面是一个合并表头列的例子:

<table class="table">
    <thead>
      <tr>
          <th rowspan="2">Name</th>
          <th colspan="2">Information</th>
          <th colspan="3">Contact</th>
      </tr>
      <tr>
          <th>Position</th>
          <th>Office</th>
          <th>Age</th>
          <th>Start date</th>
          <th>Salary</th>
      </tr>
    </thead>

    <tfoot>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </tfoot>

    <tbody>
        <tr>
            <td>Tiger Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td>2011/04/25</td>
            <td>$320,800</td>
        </tr>
        ... ...
    </tbody>
</table>

data 属性 #

DataTables 在初始化时,支持读取表格单元格(td)上的 data 属性。如在有些情况下,显示的数据可能不是用来排序的,只是为了直观的展示给用户看,比如电话号码 xxxx-xxxxxxxx,中间有一个斜杠,对于程序排序不怎么好处理。这时,可以通过 data-sort 或者 data-order 来排序,data-filter 或者 data-search 来搜索。下面的例子演示了,显示的和搜索的是不同的。

以 Tiger Nixon 为例,显示的是 T. Nixon,搜索的是Tiger Nixon。

<table class="table">
    <thead>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tfoot>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </tfoot>
    <tbody>
        <tr>
            <td data-search="Tiger Nixon">T. Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td data-order="1303686000">Mon 25th Apr 11</td>
            <td data-order="320800">$320,800/y</td>
        </tr>
        <tr>
            <td data-search="Garrett Winters">G. Winters</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>63</td>
            <td data-order="1311548400">Mon 25th Jul 11</td>
            <td data-order="170750">$170,750/y</td>
        </tr>
        <tr>
            <td data-search="Ashton Cox">A. Cox</td>
            <td>Junior Technical Author</td>
            <td>San Francisco</td>
            <td>66</td>
            <td data-order="1231718400">Mon 12th Jan 09</td>
            <td data-order="86000">$86,000/y</td>
        </tr>
        <tr>
            <td data-search="Cedric Kelly">C. Kelly</td>
            <td>Senior Javascript Developer</td>
            <td>Edinburgh</td>
            <td>22</td>
            <td data-order="1332975600">Thu 29th Mar 12</td>
            <td data-order="433060">$433,060/y</td>
        </tr>
        <tr>
            <td data-search="Airi Satou">A. Satou</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>33</td>
            <td data-order="1227830400">Fri 28th Nov 08</td>
            <td data-order="162700">$162,700/y</td>
        </tr>
        <tr>
            <td data-search="Brielle Williamson">B. Williamson</td>
            <td>Integration Specialist</td>
            <td>New York</td>
            <td>61</td>
            <td data-order="1354406400">Sun 2nd Dec 12</td>
            <td data-order="372000">$372,000/y</td>
        </tr>
        <tr>
            <td data-search="Herrod Chandler">H. Chandler</td>
            <td>Sales Assistant</td>
            <td>San Francisco</td>
            <td>59</td>
            <td data-order="1344207600">Mon 6th Aug 12</td>
            <td data-order="137500">$137,500/y</td>
        </tr>
        <tr>
            <td data-search="Rhona Davidson">R. Davidson</td>
            <td>Integration Specialist</td>
            <td>Tokyo</td>
            <td>55</td>
            <td data-order="1287010800">Thu 14th Oct 10</td>
            <td data-order="327900">$327,900/y</td>
        </tr>
        <tr>
            <td data-search="Colleen Hurst">C. Hurst</td>
            <td>Javascript Developer</td>
            <td>San Francisco</td>
            <td>39</td>
            <td data-order="1252969200">Tue 15th Sep 09</td>
            <td data-order="205500">$205,500/y</td>
        </tr>
        <tr>
            <td data-search="Sonya Frost">S. Frost</td>
            <td>Software Engineer</td>
            <td>Edinburgh</td>
            <td>23</td>
            <td data-order="1229126400">Sat 13th Dec 08</td>
            <td data-order="103600">$103,600/y</td>
        </tr>
        <tr>
            <td data-search="Jena Gaines">J. Gaines</td>
            <td>Office Manager</td>
            <td>London</td>
            <td>30</td>
            <td data-order="1229644800">Fri 19th Dec 08</td>
            <td data-order="90560">$90,560/y</td>
        </tr>
    </tbody>
</table>

配置项 #

在初始化 DataTables 表格时,可以传入配置项对象参数:

$('#table-example').dataTable({
    // init options
});

info #

Boolean

默认值:true

控制是否显示表格的条目数信息。

当应用了 info 时,会在适当位置显示表格的条目数信息。 这个配置允许打开或者关闭这个特性。

需要注意的是,默认情况下信息提示显示在表格下面的左边,但是这个可以通过 dom 配置项和 CSS 来控制。

lengthChange #

Boolean

默认值:true

是否允许最终用户改变表格每页显示的记录数。

如果启用了分页, 这个选项设为 true 时会显示一个可以让用户选择每页显示多少条记录的下拉框。下拉框中的选项值利用 lengthMenu 来配置。

注意:默认情况下这个下拉框在表格的左上角显示。在哪里显示可以通过domDT 和 CSS控制。

另外,如果将 paging 配置成了禁用,这个选项就会自动被设为 false。因为如果分页被禁用,这个选项就没有存在的合理性了。

ordering #

Boolean

默认值:true

允许或禁止对各个数据列使用排序。默认情况下,点击每列的表头单元格,可以根据该列对整个表格进行排序。这个选项可以停用这个排序功能。

注:禁止或者启用单个列的排序功能,可以通过该列的 columns.orderable 选项来实现。现在的这个 ordering 选项是一个全局的配置- 如果禁止,整个 DataTables 都会停用排序功能。

paging #

Boolean

默认值:true

DataTables 可以将大量的记录分割为一个个独立的页。在一个较小的页面空间上展示大量的数据记录的时候,这是个非常有效的方法。

这个特性提供了页面导航控件用来请求显示不同的数据。分页功能是默认启用的(true),如果你想禁止它就将它设置为 false.

processing #

Boolean

默认值:false

是否显示正在处理的状态。

当表格处在处理过程(例如排序)中时,启用或者禁止 'processing' 指示器的显示。当处理大数据时,处理过程耗费的时间很明显,这个功能就显得非常有用。

scrollX #

Boolean

默认值:false

允许水平滚动。如果你的表格太宽以至于不能适应特定的布局,或者有太多的列,可以启用表格在视窗中水平滚动。

scrollY #

String | Number

默认值:null

控制表格的垂直滚动。 Vertical scrolling 强制 DataTable 为指定的高度,并且会允许任何超出当前视口的数据进行滚动。 这个可以作为在一个小的视口内显示大量数据的一个选择(尽管分页和滚动可以同时使用,如果需要的话)。

这个属性赋值可以是CSS unit或者一个数字(这种情况下,这个数字会被认为是像素宽度),并且会应用于table body (也就是这个高度不会应用于 header 或者 footer 的高度)。

searching #

Boolean

默认值:true

此选项用来开启、关闭 DataTables 的搜索功能。

serverSide #

开启 DataTables 服务器端模式。

DataTables 有两种基本的工作模式可供选择:

默认情况下 DataTables 使用客户端处理模式,但是可以通配置让切换到服务器端处理模式。

当处理大量数据的时候(如超过50000条记录)服务器端处理模式就十分有用。这种情况下可以使用数据库来进行排序操作。现代的数据库都针对这样的处理进行了优化,使用这样的方式能够让 DataTables 轻松应付几万条的记录排序、过滤。

使用服务器端处理模式时,DataTables 会向服务器端发送必要的参数以说明所需的数据(如页码、过滤条件等)。同时 DataTable 也需要从返回的参数中获取显示表格所需的参数。

发送参数格式 #

当开启了服务器端模式时,DataTables 会发送如下参数到服务器:

名称 类型 描述
draw Integer 绘制计数器。这个是用来确保 Ajax 从服务器返回的是对应的(Ajax是异步的,因此返回的顺序是不确定的)。 要求在服务器接收到此参数后再返回。
start Integer 第一条数据的起始位置,比如 0 代表第一条数据。
length Integer 告诉服务器每页显示的条数,这个数字会等于返回的 data 集合的记录数,可能会大于因为服务器可能没有那么多数据。这个也可能是 -1,代表需要返回全部数据(尽管这个和服务器处理的理念有点违背)。
search[value] String 全局的搜索条件,条件会应用到每一列(searchable需要设置为 true)。
search[regex] Boolean 如果为 true 代表全局搜索的值是作为正则表达式处理,为 false 则不是。注意:通常在服务器模式下对于大数据不执行这样的正则表达式,但这都是自己决定的。
order[i][column] Integer 告诉后台那些列是需要排序的。i 是一个数组索引,对应的是 columns 配置的数组,从 0 开始。
order[i][dir] String 告诉后台列排序的方式,desc 降序 asc 升序。
columns[i][data] String columns 绑定的数据源,由 columns.data 定义。
columns[i][name] String columns 的名字,由 columns.name 定义。
columns[i][searchable] Boolean 标记列是否能被搜索,为 true 代表可以,否则不可以,这个是由 columns.searchableOption 控制。
columns[i][orderable] Boolean 标记列是否能排序,为 true 代表可以,否则不可以,这个是由 columns.orderableOption 控制。
columns[i][search][value] Boolean 标记具体列的搜索条件。
columns[i][search][regex] Boolean 特定列的搜索条件是否视为正则表达式,如果为 true 代表搜索的值是作为正则表达式处理,为 false 则不是。注意:通常在服务器模式下对于大数据不执行这样的正则表达式,但这都是自己决定的。

order[i]columns[i] 参数发送到服务器是数组信息:

在这两个情况下,i 是一个对应着数组序号的整数值。在大多数的现代服务器环境下,其对应的数据将自动转换为一个数组。

需要说明的是:

返回数据格式 #

一旦 DataTables 发送了请求,上面的参数就会传送给服务器,那么你需要接受到这些参数并做相应的逻辑处理然后按照下面的格式讲组装好的 JSON 数据返回 (不是每个参数都需要接受处理,根据自己的业务需要)

名称 类型 描述
draw Integer 必要。上面提到了,DataTables 发送的 draw 是多少那么服务器就返回多少。这里注意,作者出于安全的考虑,强烈要求把这个转换为整形,即数字后再返回,而不是纯粹的接受然后返回,这是 为了防止跨站脚本(XSS)攻击。
recordsTotal Integer 必要。即没有过滤的记录数(数据库里总共记录数)。
recordsFiltered Integer 必要。过滤后的记录数(如果有接收到前台的过滤条件,则返回的是过滤后的记录数)。
data Array 必要。表中中需要显示的数据。这是一个对象数组,也可以只是数组,区别在于:纯数组前台就不需要用 columns 绑定数据,会自动按照顺序去显示,而对象数组则需要使用 columns 绑定数据才能正常显示。注意这个 data 的名称可以由 ajaxajax.dataSrccolumns.dataSrc 控制。
error String 可选。你可以定义一个错误来描述服务器出了问题后的友好提示 。

除了上面的返回参数以外你还可以加入下面的参数,来实现对表格数据的自动绑定:

名称 类型 描述
DT_RowId String 自动绑定到 tr 节点上。
DT_RowClass String 自动把这个类名添加到 tr
DT_RowData Object 使用 jQuery.data() 方法把数据绑定到 row 中,方便之后用来检索(比如加入一个点击事件)。
DT_RowAttr Object 自动绑定数据到 tr 上,使用 jQuery.attr() 方法,对象的键用作属性,值用作属性的值。注意,这个需要 DataTables 1.10.5+的版本才支持。
服务器端数据格式示例 #

返回数组:

{
    "draw": 1,
    "recordsTotal": 57,
    "recordsFiltered": 57,
    "data": [
        [
            "Angelica",
            "Ramos",
            "System Architect",
            "London",
            "9th Oct 09",
            "$2,875"
        ],
        [
            "Ashton",
            "Cox",
            "Technical Author",
            "San Francisco",
            "12th Jan 09",
            "$4,800"
        ],
        ...
    ]
}

或返回对象数组:

{
    "draw": 1,
    "recordsTotal": 57,
    "recordsFiltered": 57,
    "data": [
        {
            "name":"Angelica",
            "age":"Ramos",
            "office":"System Architect",
            "address":"London",
            "date":"9th Oct 09",
            "salary":"$2,875"
        },
        {
            "name":"Ashton",
            "age":"Cox",
            "office":"Technical Author",
            "address":"San Francisco",
            "date":"12th Jan 09",
            "salary":"$4,800"
        },
        ...
    ]
}

另外,也可以包括 DT_RowIdDT_RowData

{
    "draw": 1,
    "recordsTotal": 57,
    "recordsFiltered": 57,
    "data": [
        {
            "DT_RowId": "row_3",
            "DT_RowData": {
                "pkey": 3
            },
            "first_name": "Angelica",
            "last_name": "Ramos",
            "position": "System Architect",
            "office": "London",
            "start_date": "9th Oct 09",
            "salary": "$2,875"
        },
        {
            "DT_RowId": "row_17",
            "DT_RowData": {
                "pkey": 17
            },
            "first_name": "Ashton",
            "last_name": "Cox",
            "position": "Technical Author",
            "office": "San Francisco",
            "start_date": "12th Jan 09",
            "salary": "$4,800"
        },
        ...
    ]
}

stateSave #

Boolean

默认值:false

状态保存 - 再次加载页面时还原表格状态。

开启或者禁用状态储存。当你开启了状态储存,DataTables 会存储一个状态到浏览器上,包含分页位置,每页显示的长度,过滤后的结果和排序。当用户重新刷新页面,表格的状态将会被设置为之前的设置。

数据储存在浏览器上的状态信息是使用 localStorage 或者 sessionStorage Html5 APLs。 DataTable的属性 stateDuration 用来设置使用哪个 api(localStorage:0 或者更高 或者 sessionStorage: -1)

使用 table 元素的 id 和当前页面的路径作为每个表状态数据,信息储存的唯一标示。如果 table 元素的 id 或者页面的 url 改变了,状态信息将丢失。

请注意:这个使用了 Html5 api 来存储数据,意味着这个参数的使用在 IE6/7 下会失效,因为 IE6/7 不支持这些api。使用 cookie 或者把状态保存在服务器上,可以通过使用 stateSaveCallbackstateLoadCallback 选项。

$('#example').dataTable({
    stateSave: true,
    stateSaveCallback: function(settings, data) {
        localStorage.setItem('DataTables_' + settings.sInstance, JSON.stringify(data));
    },
    stateLoadCallback: function(settings) {
        return JSON.parse(localStorage.getItem( 'DataTables_' + settings.sInstance));
    }
});

autoWidth #

Boolean

默认值:true

启用或者禁止自动列宽的计算。如果已经定义了列宽,禁止这个选项可以实现最优的性能(因为这个选项会耗费一点的时间去计算列宽)。

deferRender #

Boolean

默认值:false

控制表格的延迟渲染,可以提高初始化的速度。

默认情况下,当 DataTables 加载 Ajax 数据或者 JavaScript 数据 (ajaxdata)时,它会提前创建所需的所有 HTML 元素。当加载大量的数据集时,这个操作所耗费的时间就不能忽视,特别是在旧的浏览器例如 IE6-8 中运行时。这个选项允许 DataTables 在需要的时候,才会创建节点(rows and cells in the table body)。

举个例子来说明,如果你加载一个拥有 10,000 条记录的数据集到表格,每页显示10条记录,如果这个选项(deferred rendering)开启,DataTables 就不会一次创建10,000行,而是只是创建10行。如果用户使用了排序,分页或者搜索结果会在下一次显示的时候,才根据需要自动创建行元素。这实际上是根据分页页面的生命周期来分步的进行创建行。

需要注意的是,如果这个选项打开,正如大家都知道的,不是所有的行 Node 是可以被访问的,所以当你使用 API 的方法时,例如 columns().nodes(),你就必须考虑到这个情况。

下面展示了一个例子,演示在这种情况下如何使用 jQuery 的代理事件。

打开 deferred rendering:

$('#example').dataTable({
    "ajax": "sources/arrays.txt",
    "deferRender": true
});

jQuery 事件配合 deferred rendering 使用:

$('#example tbody').on('click', 'td', function () {
    alert('Clicked on: '+this.innerHTML);
});
$('#example').dataTable({
    "ajax": "sources/arrays.txt",
    "deferRender": true
});

data #

Array

默认值:null

指定 table 显示的数据。

单独使用 data 来定义 table 显示的数据,或者配合使用 columns.data 属性来告诉 DataTables 怎么从 data 里获取显示数据。

使用二维数组:

$('#example').dataTable({ 
    "data": [ 
        [ "Tiger Nixon", "System Architect", "$3,120", "2011/04/25", "Edinburgh", 5421 ], 
        [ "Garrett Winters", "Director", "$8,422", "2011/07/25", "Edinburgh", 8422 ], 
        // ... 
    ]
});

使用对象数组作为数据源:

$('#example').dataTable({
    "data": [
        {
            "name":       "Tiger Nixon",
            "position":   "System Architect",
            "salary":     "$3,120",
            "start_date": "2011/04/25",
            "office":     "Edinburgh",
            "extn":       5421
        },
        {
            "name": "Garrett Winters",
            "position": "Director",
            "salary": "5300",
            "start_date": "2011/07/25",
            "office": "Edinburgh",
            "extn": "8422"
        },
        // ...
    ],
    "columns": [
        { "data": "name" },
        { "data": "position" },
        { "data": "office" },
        { "data": "extn" },
        { "data": "start_date" },
        { "data": "salary" }
    ]
});

注意,如果指定了 data 选项,table 里的原内容会被覆盖掉。

ajax #

从一个远程数据源获取数据给表格显示。

使用这个参数可以让 DataTables 从一个数据源获取数据来显示表格,DataTables 接收数组、对象类型的数据,可以参考 data 选项。

当你使用对象数组作为数据源时,你需要使用 columns.data 来读取对象的属性,如果使用的是纯数组则不需要使用,Datatables 会默认按照数组的顺序显示每一个行数据。

ajax 接收三种类型的参数:

string类型 #

这个是最简单的应用,ajax 指定一个返回数据的 url,这个是多个形式的,比如 json.txt、jsonlist.action、jsonlist.jsp、jsonlist.php……。 Datatables 默认接收的是一个属性为 data 的对象,如果你返回的数据不是这样,你需要使用 ajax.dataSrccolumns.dataSrc 来处理。

默认的数据(对象)格式如下:

{
    "data": [
        { 
            "name": "Tiger Nixon", 
            "position": "System Architect", 
            "salary": "$3,120", 
            "start_date": "2011/04/25", 
            "office": "Edinburgh", 
            "extn": "5421" 
        },
        // ...
    ]
}

默认的数据(数组)格式如下:

{
    "data": [
        [ "Tiger Nixon", "System Architect", "Edinburgh", "5421", "2011/04/25", "$3,120" ],
        // ...
    ]
}

上面的数据该怎么给Datatables显示呢?先看对象的:

$('#example').dataTable({
    "ajax": "data.json",
    "columns":[
        {"data":"name"},
        {"data":"position"},
        {"data":"salary"},
        {"data":"start_date"},
        {"data":"office"},
        {"data":"extn"}
    ]
});

数组:

$('#example').dataTable({
    "ajax": "data.json"
});
object类型 #

接收一个对象,其用法类同于 jQuery.ajax,这里只介绍不相同的,没有列出的参考 jQuery 文档即可,可以同样适用。

一个简单的例子:

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "type": "POST"
    }
});
function类型 #

作为一个函数,这个可以完全自己控制 Ajax 请求,请求参数,返回的数据都可以不受 DataTables的影响。事实上你可以使用非 Ajax 请求,而直接使用本地储存。

你可以直接从本地数据库获取数据交给 callback 去处理。

例子如下:

$('#example').dataTable({
    "ajax": function (data, callback, settings) {
        callback(
            JSON.parse(localStorage.getItem('dataTablesData'))
        );
    }
});

注意:在1.10.6+,当使用了 ajax 属性后, xhr 事件会被触发(即使没有 Ajax 请求)。

参数:

名称 类型 描述
data Object 发送给服务器的数据
callback Function 必须被执行,DataTables 才能获取到数据;且将返回的数据作为 callback() 的唯一参数。(参数中可以配置 DataTable 的页面信息)
settings Object DataTables 的设置对象
data #

增加或修改通过 Ajax 提交到服务端的请求数据。

当向服务器发出一个 Ajax 请求,DataTables 将会把服务器请求到的数据构造成一个数据对象。数据包含的内容取决于 DataTables 操作的处理模式:

实际上他是参考 jQuery 的 ajax.data 属性来的,他能添加额外的参数传给服务器。DataTables 在此基础上还提供了一个函数,以便 DataTables 在请求服务器的时候可以处理这些数据。

object类型 #

如果当做一个对象,ajax.data 选项用于扩展 DataTables 构造内部对象,将额外的,静态的参数传递给服务器。对于动态的处理,使用 ajax.data 作为一个函数(见下文)。

function类型 #

作为一个函数,ajax.data 选项可以用于修改由 DataTables 内部构造的原始数据或者完全取代这些,然后 Ajax 请求到服务器。

在每次 DataTables 请求服务器时都可以动态计算提交的参数,比如你可以添加一个文本框当做过滤的条件。

参数:

名称 类型 描述
data Object Datatables构造的请求参数,如果开启了服务器模式( serverSide ) 这个还会包含服务器请求的一些参数

返回:Object | String | undefined

如果返回一个对象,返回的对象将被作为请求数据使用。返回值不会和原来的数据对象参数合并。

如果返回一个字符串, 该字符串将用于 Ajax 请求体而不是发送的单个 HTTP 参数。这对于在请求体中发送 JSON 编码的数据特别有用,因此服务器可以直接解码,而不是发送单独的 HTTP 参数。见下面的例子说明如何使用 JSON.stringify() 实现。

如果没有返回值(比如 undefined),将使用原来的数据对象参数作为请求数据。

例子:

添加一个静态值,来提交额外的参数(user_id)

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "data": {
            "user_id": 451
        }
    }
});

通过操作数据对象添加数据请求(函数没有返回)

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "data": function ( d ) {
            d.extra_search = $('#extra').val();
        }
    }
});

添加数据请求(函数有返回)

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "data": function (d) {
            return $.extend({}, d, {
                "extra_search": $('#extra').val()
            });
        }
    }
});

以 json 格式提交

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "contentType": "application/json",
        "data": function (d) {
            return JSON.stringify(d);
        }
    }
});

动态传参数

// 初始化表格
var oTable = $("#example").DataTable({
    ajax: {
        url: "dataList.action",
        data: {
            args1: "我是固定传参的值,在服务器接收参数[args1]"
        }
    }
});

// 当你需要多条件查询,你可以调用此方法,动态修改参数传给服务器
function reloadTable() {
    var name = $("#seName").val();
    var admin = $("#seAdmin").val();
    var param = {
        "obj.name": name,
        "obj.admin": admin
    };
    oTable.settings()[0].ajax.data = param;
    oTable.ajax.reload();
}
dataSrc #

ajax 选项基本继承了 jQuery.ajax 所有的选项,但是 DataTables 额外提供了 dataSrc 属性来改变从服务器返回的数据给 DataTables,或者是操作数据从一种形式转换成另一种形式(比如 xml、json、yaml 等)。这么做是因为 ajaxsuccess 选项不能被改变 - DataTables 内部自己加载数据完成时使用。

string类型 #

作为一个字符串,dataSrc 定义为从数据源获取什么样的数据对象加载给 DataTables(比如 Ajax 请求返回包含多个数据对象)。

如果 Ajax 返回的是一个数组,不是一个对象,将此字符串设置为空字符串即可。

此外你也可以使用 JavaScript 对象符号来标示数据源里对象的层次。

function类型 #

作为一个函数,dataSrc 可以操作从服务器返回的数据转化成另一种。 例如, 如果数据被分隔在多个数组里面,你需要合并到一个数组返回给 DataTables 处理后显示

非 json 格式的数据(xml,yaml等等),可以通过 dataSrc 来转换成 JavaScript 数组交给 DataTables 显示。

参数:

名称 类型 描述
data Object 从 Ajax 请求服务器返回的数据。默认情况下,数据源中包含 data 属性(或者是 aaData,如果 data 不存在,向后兼容)

返回:Array

返回 DataTables 使用的数据数组。

示例:

通过 Ajax,从一个文件获取 JSON 数据,使用 dataSrc 属性把 data 改为 tableData(比如:{ tableData: [ ...data... ] }

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "dataSrc": "tableData"
    }
});

通过 Ajax,从一个文件获取 JSON 数据,通过 dataSrc 设置为空字符串,不从数组对象里获取,而是从数组里获取(比如:{ [ ...data... ] }

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "dataSrc": ""
    }
});

操作从服务器返回的数据,给数据添加链接(提示,这里也可以使用 columns.render 来实现,这里只是举个例子如何操作数据)

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "dataSrc": function (json) {
            for ( var i=0, ien=json.data.length ; i<ien ; i++ ) {
                json.data[i][0] = '<a href="/message/'+json.data[i][0]+'">View message</a>';
            }
            return json.data;
        }
    }
});

createdRow #

Function

tr 元素被创建时候的回调函数。

当 tr 元素被创建(所有的td元素已经插入进去),或者给 tr 绑定事件,该回调函数被执行,允许操作 tr 元素。

这个是非常有用的,当你延迟渲染( deferRender )或者开启服务器模式时,你可以在他创建的时候添加事件,类名或者其他的。

参数:

名称 类型 描述
row Node 已经被创建的 tr 元素
data Array | Object 包含这行的数据对象
dataIndex Integer DataTables 内部存储的数据索引

示例:

给指定字符的数据添加一个样式

$('#example').dataTable({
    "createdRow": function(row, data, dataIndex) {
        if (data[4] == "A") {
            $(row).addClass( 'important' );
        }
    }
});

drawCallback #

DataTables 每次重绘后执行的方法。

当每次表格重绘的时候触发一个操作,比如更新数据后或者创建新的元素。

参数:

名称 类型 描述
settings Object DataTables 的设置对象

示例:

当表格重绘的时候弹出提示

$('#example').dataTable({
    "drawCallback": function(settings) {
        alert('表格重绘了');
    }
});

在回调函数里使用 api 方法输出当前页的数据

$('#example').dataTable({
    "drawCallback": function(settings) {
        var api = this.api();
        // 输出当前页的数据到浏览器控制台
        console.log(api.rows({page:'current'}).data());
    }
});

formatNumber #

Function

数字格式化时的回调函数。

在实际使用过程中,可能遇到需要显示大数据的情况,比如:9874029144。但是这个不直观,一下子不能识别这个数是多大。DataTables 提供一个回调函数 formatNumber 来渲染这些数字。

假设用千分符来分隔,看起来就不一样了,如 9,874,029,144

此函数允许完全控制如何执行格式化。默认情况下将使用指定的数据表中 language.thousands 字符(反过来,默认情况下,是一个逗号)作为千位分隔符。

参数:

名称 类型 描述
formatNumber Integer 要被格式化的数字值

返回:String

格式化后的数字字符串。

下面是一个基本的用法:

如果是大数字,使用 ' 分隔

$('#example').DataTable({ 
    "formatNumber": function (toFormat) { 
        //使用正则表达式匹配,替换数字 
        return toFormat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "'"); 
    }; 
});

headerCallback #

Function

表格 Header 显示时的回调函数。

一个标准的表格分为 thead,tbody 和 tfoot,一般我们可能只使用了 thead 和 tbody,在开发过程中偶尔也会在表头做一些特殊处理,DataTables 提供了表头的回调处理方法 headerCallback

参数:

名称 类型 描述
thead Node table 的表头元素对象
data Array table 的所有数据对象
start Integer Index for the current display starting point in the display array
end Integer Index for the current display ending point in the display array
display Array Index array to translate the visual position to the full data array

示例:

修改 thead 里的内容

$('#example').dataTable({
    "headerCallback": function(thead, data, start, end, display) {
        $(thead).find('th').eq(0).html('Displaying '+(end-start)+' records');
    }
});

footerCallback #

Function

tfoot 显示回调方法。

headerCallback 回调一样,只不过这个是用来处理 tfoot 的每一次重绘事件。

注意:如果没有 tfoot,此回调函数将不会被执行。

参数:

名称 类型 描述
tfoot Node table 的表脚元素对象
data Array table 的所有数据对象
start Integer Index for the current display starting point in the display array
end Integer Index for the current display ending point in the display array
display Array Index array to translate the visual position to the full data array

示例:

修改 tfoot 里的内容

$('#example').dataTable({
    "footerCallback": function( tfoot, data, start, end, display ) {
        $(tfoot).find('th').eq(0).html( "Starting index is "+start );
    }
});

infoCallback #

Function

改变表格状态信息的回调函数。

表格通常有一个描述信息,用来显示当前表格总共多少记录,当前显示的是多少条到多少条记录,或者其他自定义的信息,如果你需要自定义这些,这个回调函数会帮你处理这个问题。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
start Integer 在渲染数据里的起始位置
end Integer 在渲染数据里的结尾位置
max Integer table 的总行数(过滤之前)
total Integer table 的总行数(过滤之后)
pre String DataTables 根据自己的规则格式化后的字符串

示例:

首页右下角表格效果

$('#example').dataTable({ 
    "infoCallback": function(settings, start, end, max, total, pre) { 
        return start +"-"+ end+"(共"+total+"个热心网友 )<a class='button button-success' href='/about/index.html#donate'>我也要赞一个 &gt;&gt;</a>"; 
    }
});

使用 api 获取分页信息

$('#example').dataTable({ 
    "infoCallback": function(settings, start, end, max, total, pre) { 
        var api = this.api(); 
        var pageInfo = api.page.info(); 
        return 'Page '+ (pageInfo.page+1) +' of '+ pageInfo.pages; 
    }
});

initComplete #

Function

当表格完成加载绘制完成后执行此方法。

表格初始化是在 Ajax 之前,所以这个回调是指在所有数据都加载完成后。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
json Object 如果使用 ajax 选项来获取数据,则得到服务器返回的数据,否则是 undefined

示例:

表格加载完成弹出提示框

$('#example').dataTable({
    "initComplete": function(settings, json) {
        alert( 'DataTables has finished its initialisation.' );
    }
});

当表格加载时,显示[正在加载……]的的字样 (设置 processing 属性也可以达到这个效果)

$('<div class="loading">正在加载……</div>').appendTo('body');

$('#example').dataTable({
    "initComplete": function(settings, json) {
        $('div.loading').remove();
    }
});

preDrawCallback #

Funciton

表格绘制前的回调函数。

与这个回调类似的还有 drawCallback 回调,他们俩区别在于执行的先后顺序不同。

preDrawCallback 在重绘表格前执行,你可以用来显示之前做更新或者清除操作,比如移除事件。这个回调函数还可以用来取消重绘操作,当方法返回 false 时。

参数:

名称 类型 描述
settings Object DataTables 的设置对象

示例:

重绘前移除每个单元格的点击事件

$('#example').DataTable({ 
    "preDrawCallback": function(settings) { 
        $('#example tbody').off('click', 'td'); 
    }
});

#test 的值为 1 的时候,取消重绘操作。

$('#example').DataTable({ 
    "preDrawCallback": function(settings) {
        if ($('#test').val() == 1) {
            return false;
        }
    }
});

rowCallback #

Function

表格行(Row)绘制的回调函数。

这个回调一般用来给行添加 class 名称,或者直接操作 TR 元素,但请注意,初始化操作中,createdRow 操作行的效率要更高。

参数:

名称 类型 描述
row Node table 的 TR 元素对象
data Array | Object 包含这行的数据对象
index Integer DataTables 内部为当前行设置的索引

示例:

高亮显示单元格值为 A 的(对象类型数据源)

$('#example').DataTable({ 
    "rowCallback": function(row, data, index) {
        if ( data.grade == "A" ) {
            $('td:eq(4)', row).html('<b>A</b>');
        }
    }
});

高亮显示单元格值为 A 的(数组类型数据源)

$('#example').DataTable({ 
    "rowCallback": function(row, data, index) {
        if (data[4] == "A") {
            $('td:eq(4)', row).html('<b>A</b>');
        }
    }
});

stateLoadCallback #

Function

该回调函数定义了从哪里和如何读取保存的状态。

这个回调函数定义了保存状态应该怎样、从哪里被读取。默认情况下 DT 从 localStorage 读取,但是也许你也会从服务器或者 cookies 中获取这些状态。

关于储存的个数据格式,参考 stateSaveCallback

注意,这个回调函数需要和 stateSaveCallback 配合使用。一个是如何读取,一个是如何存储。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
callback Function callback 回调必须在状态数据通过 Ajax 或其他异步方式获得后调用。此时,stateLoadCallback 方法必须返回 undefined。需要 1.10.3 以上(含)版本支持。

返回:Object | undefined

如果数据是同步方式获取的,需要返回获取到的状态数据对象。

示例:

从服务器读取状态(同步方式)

$('#example').DataTable({ 
    "stateSave": true, 
    "stateLoadCallback": function (settings) { 
        var o; 
        // Send an Ajax request to the server to get the data. Note that 
        // 发送一个ajax请求到服务器获取数据,注意 
        // this is a synchronous request since the data is expected back from the 
        // 这是一个同步请求的示例,直到数据返回 
        // function 
        $.ajax({ 
            "url": "/state_load", 
            // 同步 
            "async": false, 
            "dataType": "json", 
            "success": function (json) { 
                o = json; 
            }
        }); 
        return o; 
    }
});

异步读取状态数据方式(需要 1.10.13+ 版本)

$('#example').DataTable({
    stateSave: true,
    stateLoadCallback: function (settings, callback) {
        $.ajax({
            url: '/state_load',
            async: false,
            dataType: 'json',
            success: function (json) {
                callback(json);
            }
        });
    }
});

stateLoaded #

Function

状态加载完成之后的回调函数。

stateLoadCallback 执行完毕后或者保存的数据被操作即触发这个回调函数。这个回调函数用来了解到数据是否已经存储或者保存了。比如,你可以用它来填充过滤框实现自定义过滤。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
data Object 要保存的数据。数据来自 stateSaveParams

示例:

弹出全局的过滤条件

$('#example').DataTable({ 
    "stateSave": true, 
    "stateLoaded": function (settings, data) { 
        alert('Saved filter was: '+data.search.search); 
    } 
});

stateLoadParams #

Function

状态加载完成之后,对数据处理的回调函数。

回调允许在加载状态之前修改保存在状态里的数据。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
data Object 要保存的数据。数据来自 stateSaveParams

示例:

去掉保存在状态里过滤条件,意味保存在状态里的搜索条件永远不会被读取到

$('#example').DataTable({ 
    "stateSave": true, 
    "stateLoadParams": function (settings, data) { 
        data.search.search = ""; 
    }
});

通过返回 false 不允许使用保存在状态里的数据

$('#example').DataTable({ 
    "stateSave": true, 
    "stateLoadParams": function (settings, data) { 
        return false; 
    } 
});

stateSaveCallback #

Function

该回调函数定义了状态该存储在什么地方及如何存储。

stateSave 设为 true 时,代表 DataTables 能存储表格的状态(过滤,排序,分页等等)默认情况使用 localStorage 进行存储。这个回调函数允许你更改怎样储存或在哪里储存表格状态数据,比如从服务器上。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
data Object 要保存的数据。数据来自 stateSaveParams

传入的 data 参数的格式为:

{
    "time":   {number}               // Time stamp of when the object was created
    "start":  {number}               // Display start point
    "length": {number}               // Page length
    "order":  {array}                // 2D array of column ordering information (see `order` option)
    "search": {
        "search":          {string}  // Search term
        "regex":           {boolean} // Indicate if the search term should be treated as regex or not
        "smart":           {boolean} // Flag to enable DataTables smart search
        "caseInsensitive": {boolean} // Case insensitive flag
    },
    "columns" [
        {
            "visible": {boolean}     // Column visibility
            "search":  {}            // Object containing column search information. Same structure as `search` above
        }
    ]
}

示例:

保存状态到服务器上

$('#example').DataTable({ 
    "stateSave": true, 
    "stateSaveCallback": function (settings, data) { 
        // Send an Ajax request to the server with the state object 
        // 发送一个请求把数据存到服务器
        $.ajax({ 
            "url": "/state_save", 
            "data": data, 
            "dataType": "json", 
            "type": "POST", 
            "success": function () {} 
        });
    } 
});

stateSaveParams #

Function

对状态进行存储时,对数据处理的回调函数。

stateSaveCallback 执行完毕后或者保存的数据被操作即触发这个回调函数。

参数:

名称 类型 描述
settings Object DataTables 的设置对象
data Object 要保存的数据。数据来自 stateSaveParams

示例:

移除过滤条件,即搜索条件不会被保存在状态里

$('#example').DataTable({ 
    "stateSave": true, 
    "stateSaveParams": function (settings, data) { 
        data.search.search = ""; 
    } 
});

deferLoading #

Integer | Array

默认值:null

延迟服务器加载数据直到第二次绘制。

最低支持版本:1.10.10

当你使用服务器模式处理的时候,默认的操作模式是简单的抹掉表格中已经存在的数据然后请求服务器获取第一页的数据显示在表格中。这对于一个空的表格来说,没有什么问题,但是如果你已经有第一页数据显示在表格中,这样操作比较浪费资源,因此,这个选项的存在是为了允许你告诉 DT 不去做出初始化的请求,而是使用页面上已经有的数据 (排序等操作不会被应用)。

deferLoading 用于表示需要延迟加载,他也用来告诉DT 全表有多少条记录(让信息显示控件-左下角和分页插件-右下角正确地显示)。在初始化过滤的情况下,接受一个数组, 其中第一个元素是过滤后的记录数,第二个元素是总的记录数。

注意:这个选项仅在开启了 serverSide 才会起作用。在客户端模式下该参数无效。

当给定一个整数时,表示延迟加载,并且告诉 DT 有多少条数据在完整的结果集里。

当给定一个数组时,也表示延迟加载,第一个元素表示告诉 DT 有多少过滤后的记录数,第二个元素表示告诉 DT 总共有多少记录。

示例:

表格中总共显示57条记录,无过滤操作

$('#example').DataTable({ 
    "serverSide": true, 
    "ajax": "scripts/server_processing.php", 
    "deferLoading": 57 
});

过滤后57条记录,100条不过滤(一个初始化过滤操作,过滤和my_filter字符串匹配的记录)

$('#example').dataTable({ 
    "serverSide": true, 
    "ajax": "scripts/server_processing.php", 
    "deferLoading": [ 57, 100 ], 
    "search": { 
        "search": "my_filter" 
    } 
});

destroy #

Boolean

默认值:false

销毁已经存在的 DataTables 实例并替换新的选项。

初始化一个新的 DataTables,如果已经存在,则销毁(配置和数据),成为一个全新的 DataTables 实例。如果你不想用 api 的方法操作,那么就在初始化时加上这个属性,并设为 true

如果你只想改变数据而不是配置选项,使用 ajax.reload() 方法或者 rows.add() 方法。

示例:

摧毁一个已经存在的 DataTables,然后创建一个新的

$('#example').dataTable({
    "srollY": "200px"
});
// 先用上面的初始化Datatables,然后在用下面的初始化Datatables,滚动条会消失
$('#example').dataTable({
    "filter": false,
    "destroy": true
});

displayStart #

Integer

默认值:0

初始化显示的时候从第几条数据开始显示(一开始显示第几页)。

定义表格初始化时显示的页数,使用这个参数的前提是得开启分页特性 paging:true,默认情况下是打开分页的,如果把 paging 属性设为了 false,该配置项将不起作用。

示例:

如果每页显示 10 条数据,希望表格初始化的时候显示的是第三页的数据,应该设为 20

$('#example').DataTable({ 
    "displayStart": 20 
});

dom #

String

默认值:'lfrtip'

控制 DataTables 元素的位置。

DataTables 会添加一些控制元素在表格的周围,比如默认状态下改变每页显示条数(l)的空间在左上角,即使搜索框(f)在右上角,表格的信息(i)显示在左下角,分页控件(p)显示在右下角。

这些控件在给大家带来便利的同时,也可能出现困惑。比如我想把 l 放在 i 的后面,我想表格的上下都有 p,我想加入自己的控件放在 l 的后面等等。不用担心,DataTables 考虑到了这个问题。使用 dom 选项就可以灵活配置各个特性的位置。

DataTables 定义了10个字符表示不同的组件:

比如:

dom: '<"wrapper"flipt>'

则对应的 DOM 结构为:

<div class="wrapper">
    { filter }
    { length }
    { info }
    { paging }
    { table }
</div>

又比如:

dom: '<lf<t>ip>'

对应的 DOM 结构为:

<div>
    { length }
    { filter }
    <div>
        { table }
    </div>
    { info }
    { paging }
</div>

需要注意的是,除了 t 以外,其他选项可以指定多次,比如你可以在 thead 和 tfoot 同时定义 f,出现两个搜索框。

通过 dom 选项还可以给 DataTables 添加额外的插件,使表格看起来是一个整体,更加美观。

一个完整的使用示例:

$('#table-example').dataTable({
    "dom": '<"top"i>rt<"bottom"flp><"clear">'
});

lengthMenu #

Array

默认值:[ 10, 25, 50, 100 ]

定义在每页显示记录数的 select 中显示的选项。

它接受一维数组或者是二维数组,根据自己的需要可以自行设置。

一维数组:

$('#example').DataTable({ 
    "lengthMenu": [ 20, 30, 40, 50, 100 ] 
});

表示可以把表格设置为每页 20/30/40/50/100 条数据显示。

二维数组:

$('#example').DataTable({ 
    "lengthMenu": [ [10, 25, 50, -1], [10, 25, 50, "所有"] ] 
});

第一个数组是具体的值,理解为 <option value=""></option> value 对应的值。

第二个数组是用来显示的文字,理解为 <option value="">显示的文字</option>

需要注意的是,数字要大于 0,设为 -1 表示显示全部数据。

orderCellsTop #

Boolean

默认值:false

控制表头(colspan rowspan 表头)的哪一个单元格可以应用于该列的排序响应。

最低支持版本:1.10.10

允许控制 DataTables 是否应该使用上面(true)或者下面(false - default)唯一的单元格来找到单个的列附加默认的排序监听器。 这个在复杂表头的应用中非常有用。

考虑下面 Html 表格头部的代码:

<thead>
    <tr>
        <td rowspan="2">1</td>
        <td>2.1</td>
    </tr>
    <tr>
        <td>2.2</td>
    </tr>
</thead>

在这个情况下,当 orderCellsTop 是 false(默认) 时,单元格 1 和 2.2 将会被监听排序事件。如果 orderCellsTop 是 true,那么 1 和 2.1 将会被监听排序事件。

例子:

在复杂表头中使用上面的单元格来监听排序事件

$('#example').DataTable({
    "orderCellsTop": true
});

orderClasses #

Boolean

默认值:true

高亮显示表格中排序的列。

DataTables 高亮被排序的列,是通给该列的所有单元格加上一个class。分别是 sorting_1sorting_2sorting_3。整数表示多列排序时给不同的列分别标记上,如果超过了3列被排序,则重复 sorting_3 这个。

需要注意的是,特别是在低版本的浏览器下,一页显示很多数据,然后需要操作大批量的 dom 元素,这个特性会影响性能。因此,当你使用的是低版本的浏览器或者有大量数据的时候,你可以使用这个选项来关闭此特性。

例子:

禁用列排序类

$('#example').DataTable({ 
    "orderClasses": false 
});

orderFixed #

Array | Object

排序始终作用于表格。

这个参数和 order 参数同时生效,两者都是来初始化 DataTables 的排序操作,然后用户可以通过点击表头来修改,而这个选择指定的顺序总是应用到表格中不管用户的操作。

这个固定的排序可以应用在用户标准排序的前面 prepost 之后,通过下面 2 中不同的形式(array or object)来描述。

当给定的是一个数组的时候,此参数给定的排序将会作用于标准排序之前,格式参考下面的例子。

当给定了一个对象时,可以分别使用 pre/post 表示在标准排序之前还是之后。选项不是必选,因此你可以指定你仅需要的选项。

用于描述排序条件的值以两个元素数组的形式给出:

当然还可以在数组里嵌套数组来实现同时多列排序。

当你的列是隐藏的,而这列又必须首先排序(索引列,优先级列)或者是分组显示的列等一些情况,这个特性是非常有用的。

例子:

第一列将会始终按照升序

$('#example').DataTable({ 
    "orderFixed": [ 0, 'asc' ] 
});

和上面一样,换做对象的方式指定

$('#example').DataTable({ 
    "orderFixed": { "pre": [ 0, 'asc' ] }
});

第一列和第二列在标准排序后,始终按照升序排列

$('#example').DataTable({
    "orderFixed": { "post": [[ 0, 'asc' ], [ 1, 'asc' ]] }
});

同时指定 pre 和 post,在标准排序前,第一列始终按照升序排列,在标准排序后,第二列始终按照升序排列

$('#example').DataTable({ 
    "orderFixed": { 
        "pre": [ 0, 'asc' ], 
        "post": [ 1, 'asc' ] 
    } 
});

orderMulti #

Boolean

默认值:true

多列排序控制。

当排序功能( ordering 为 true )打开的时候,DataTables 默认是允许用户按住 shift 点击表头,多列排序。虽然这个操作对用户来说是比较有用的,但同时也增加了表格处理数据的时间。因此,可以通过此选项来关闭多列排序的功能。

需要注意的是,即使禁用了多列排序,但是开发人员任然可以使用 columns.orderDataorderorder() 在代码里 实现多列排序,次禁用只是不允许用户来操作多列排序。

例子:

禁用多列排序

$('#example').DataTable({
    "orderMulti": false
});

order #

Array

默认值:[[0, 'asc']]

设置默认排序列。

例子:

不设置默认排序

$('#example').DataTable({
    "order": []
});

设置默认第二列为升序

$('#example').DataTable({
    "order": [[ 1, 'asc' ]]
});

pageLength #

Integer

默认值:10

使用分页时,单页显示的数据条数。

如果该参数是开启的,那么用户可以通过弹出(lengthMenu)的菜单设置每页显示的数据条数。

例子:

默认每页显示 50 条数据

$('#example').DataTable({
    "pageLength": 50
});

pagingType #

String

默认值:'simple_numbers'

DataTable s默认情况下会在表格下面显示一个分页控件(可以使用 dom 选项和额外的 CSS 更改其位置),用户可以使用这个导航按钮来操作表格翻页。

分页控件中显示的按钮由此处给出的选项定义。DataTables有6个内置的分页按钮布局:

例子:

显示首页,尾页,上一页和下一页四个按钮,加上数字按钮

$('#table-example').dataTable({
    "pagingType": "full_numbers"
});

renderer #

String | Object

显示组件渲染器类型。

DataTables 添加了一些复杂的控件,比如分页控件。用于计算表格中的数据应该显示多少页,是 DataTables 的核心,通常情况下不会跟着页面的样式改变实际显示的方式,比如分页按钮可能是 ul 下的 li,或者只是一组 a 标签。

DataTables 提供了扩展的能力,DataTables 提供集成选项来支持目前几种流行的 CSS 框架,比如 Bootstrap,Foundation 和 jQuery UI。

此参数可以告诉 DataTables 使用那种渲染器,前提是指定的渲染器是已经存在的,否则使用默认的渲染器。可以通过插件添加其他渲染器。

通过 jq/dataTables-bs3 引入的 DataTables 使用了 Bootstrap 渲染器。

DataTables当前支持两种不同渲染器类型:

例子:

使用 Bootstrap 插件渲染器

$('#example').DataTable({
    renderer: "bootstrap"
});

指定特定的渲染器

$('#example').DataTable({
    renderer: {
        "header": "jqueryui", 
        "pageButton": "bootstrap"
    }
});

retrieve #

Boolean

默认值:false

检索已存在的 Datatables 实例。

意思是如果已经初始化了,则继续使用之前的Datatables实例。

相反如果你不想这样你需要使用 destroy 配置项来销毁对象。

示例:

$(document).ready(function() {
    initTable();
    tableActions();
});
function initTable() {
    return $('#example').dataTable({
        "scrollY": "200px",
        "paginate": false,
        "retrieve": true
    });
}
function tableActions() {
    //这里获得的是之前的Datatables实例而不是重新实例化的
    var table = initTable();
}

rowId #

String

默认值:'DT_RowId'

最低支持版本:1.10.8

大部分的表格都会带出 id,用来做唯一标示,修改,删除都会用到 id。

DataTables 提供了一个内部实现,让绑定 id 不需要再写其他代码,配置上属性即可。

默认情况下,通过 DT_RowId 获取 id:

$('#myTable').DataTable({
    data: {
        data: [
            {
                "id": 341,
                "name": "Datatables中文网",
                "DT_RowId": 341
            }, 
            {
                "id": "a",
                "name": "不定时一讲",
                "DT_RowId": "a"
            }
        ]
    }
});

只要是上面的数据格式,DataTables 就会默认给处理,在每个 tr 上加上 id:

<tr id="341">
    <td>341</td>
    <td>Datatables中文网</td>
</tr>
<tr id="a">
    <td>a</td>
    <td>不定时一讲</td>
</tr>

当然,也可以通过 rowId 配置项设定 id 的设置属性:

$('#myTable').DataTable({
    data: {
        data: [
            { 
                "name": "Datatables中文网",
                "info": {
                    "id": "341",
                    "age": 2
                }
            }
        ]
    },
    rowId: 'info.id'
});
$('#myTable').DataTable({
    data: {
        data: [
            {
                "id": "341",
                "name": "Datatables中文网",
                "age": 2
            }
        ]
    },
    rowId: 'id'
});

最后的表格是下面的样子

<tr id="341">
    <td>341</td>
    <td>Datatables中文网</td>
</tr>

另外,通过 api 的 .id() 方法可以获取某行的 id

var table = $('#myTable').DataTable(); 
$('#myTable').on('click', 'tr', function () {
    var id = table.row( this ).id();
    alert( '被点击行的id是 '+id );
});

scrollCollapse #

Boolean

默认值:false

当显示更少的记录时,是否允许表格减少高度。

对于表格的高度,一些人希望随着数据的变化而变化,另一些人则希望固定高度,这个参数正是起到这个用处。

示例:

$('#example').DataTable({
    // 不管表格中有没有数据都固定300的高度 
    scrollY: 300,
    scrollCollapse: true
});

如果没有使用 scrollY 属性,表示和表格数据同步,表格数据减少时,表格的高度也跟着减少。

Object

设置一个初始化过滤条件并且或者配置过滤选项。

可以接受一个字符串或者一个对象。

作为字符串的时候就是设置初始化过滤条件。

作为对象的时候,可以配置下面过滤选项:

示例:

给全局设置初始化过滤选项

var table = $('#example').DataTable({
    "search": "Fred"
});

等同于

var table = $('#example').DataTable({
    "search": {
        "search": "Fred"
    }
});

search.search #

String

DataTables 在初始化的时候可以设置一个默认的条件进行过滤,这在某些应用场景是可以用到的。

示例:

表格初始化时,默认搜索包含 Fred 的数据

var table = $('#example').DataTable({
    "search": {
        "search": "Fred"
    } 
});

search.caseInsensitive #

Boolean

默认值:true

这个参数很简单,在只有英文的情况下使用这个参数可以设置这个参数,DataTables 过滤的时候是否区分大小写。

示例:

var table = $('#example').DataTable({
    "search": { 
        // 关掉区分大小写过滤 
        "caseInsensitive": false
    }
});

search.regex #

Boolean

默认值:false

DataTables 是支持正则表达式搜索的,这个对于高级点的应用来说能派上用场。

示例:

var table = $('#example').DataTable({
    "search": { 
        // 开启正则支持 
        "regex": true
    }
});

search.smart #

Boolean

默认值:true

DataTables 在默认情况下是有一个智能搜索,实际上就是所谓的 keyup 事件,输入一个字符进行匹配,但不只是简单的进行字符串比较。

如果你使用 search.regex 参数,可能需要关掉这个智能搜索,如果一个自定义的正则表达式还没有输入完整,可能体验不会很好,那么关闭智能搜索即可。

示例:

禁用智能过滤

var table = $('#example').DataTable({
    "search": {
        "smart": false
    }
});

searchCols #

Array

给单独的列定义初始化过滤条件。

search.search 类似,只是这个不是全局的, 而是针对于某个列,这个参数接受一个对象数组,对象里有两个属性 searchescapeRegexsearch 代表过滤的条件,escapeRegex 代表是否支持正则,这个参数是可选的。

需要注意的是,这个对象数组需要和列数匹配。

示例:

总共4列的表格,给第二列和第四列设置初始化过滤条件

var table = $('#example').DataTable({ 
    "searchCols": [ 
        null, 
        // 第二列初始化过滤条件为 My filter 
        { "search": "My filter" }, 
        null, 
        // 第四列初始化过滤条件为 使用正则表达是 ^[0-9] 来过滤 
        { "search": "^[0-9]", "escapeRegex": false } 
    ]
});

searchDelay #

Integer

默认值:null

设置搜索延迟时间。

DataTables 的客户端搜索和服务器搜索默认的延迟时间是400ms,所以当按下键后就立马开始搜索, 这样处理只是符合大多数情况,但是有些时候这样处理太消耗资源,降低了用户体验:

  1. 电脑比较旧了,性能更不上,那么需要调整下这个延迟时间
  2. 服务器端数据太多了,减少请求次数,这是优化服务器性能
  3. 减少重绘次数
  4. 当然,你还可以设置为0,来获得更快的速度,只要你愿意

searchDelay 接受的参数以 ms 为单位。

这个延迟参数只针对全局搜索有效,如果是使用 search()column().search() 等 API 方法则此参数不会生效,需要使用 $.fn.dataTable.util.throttle() API 来处理。

默认情况下,DataTables 会自己判断如果是客户端模式,该值为 Instant (及时),如果是服务器模式,值为 400ms

示例:

设置延时时间为350ms

var table = $('#example').DataTable({ 
    searchDelay: 350 
});

stateDuration #

Integer

默认值:7200

状态保存有效期。

在有效期时间内,状态一直有效,过了这个时间之后,恢复到默认状态。

这个选项还可以用来指明是使用 localStorage 还是 sessionStorage,当为 -1 的时候使用 sessionStorage,当为 0 或者更大的数字的时候使用 localStorage

这两个存储 API 的区别在于,sessionStorage 仅保留当前会话的数据(ie.当前的浏览器窗口)。更多关于的信息,参考 Mozilla Storage documentation

请注意,该值以秒为单位。0 是一个特殊的值,表示可以无限期的储存和检索已经存在的对象。

示例:

设置有效期时间为1天

$('#example').DataTable({ 
    "stateSave": true, 
    "stateDuration": 60 * 60 * 24 
});

使用 sessionStorage

$('#example').DataTable({ 
    "stateSave": true, 
    "stateDuration": -1 
});

stripeClasses #

Array

给表格行设置条纹样式。

默认情况下,DataTables 就已经把行和行区分开了,使用的是 $.fn.dataTable.ext.classes.stripe* 选项,值为 oddeven

stripeClasses 可以是任意长度的数组,设置 2 个,那么就 1 2,1 2,1 2 这么循环;如果设置 3 个,就是 1 2 3,1 2 3,1 2 3 这么循环。

示例:

定义三个不同的样式

var table = $('#example').DataTable({
    "stripeClasses": [ 'strip1', 'strip2', 'strip3' ]
});

tabIndex #

Integer

默认值:0

Tab 键控制键盘导航。

默认情况下 DataTables 允许通过添加 tabIndex 属性在需要的元素上,实现键盘导航操作表格(比如每页条数,过滤,排序,和分页操作)。 这样用户就可以使用 Tab 键切换到相应的控件,按下 Enter 激活它们,而不需要使用鼠标操作。

默认下 tabIndex 为 0,意味着按照 dom 的顺序进行切换。-1 代表禁用 Tab 切换焦点。

需要注意的是,默认情况下,Tab切换的焦点是浏览器原生支持的元素,比如 form 表单里的所有元素( input, radio, select, button 等等 ),还有 a 标签之类的这种带操作性质的元素。 DataTables内部处理,当 tabIndex 的值大于 0 时,焦点切换的顺序是先在带有 tabIndex 的属性的元素按照数字大小依次切换,然后再是其他元素(select-每页显示多少条数据,input-过滤框)。

例子:

以起始焦点在l(数据长度切换下拉框)上,tabIndex为1的时候,焦点切换顺序依次是:

$('#example').DataTable({
    "tabIndex": 1
});

同样以起始焦点在 l(数据长度切换下拉框)上,tabIndex 为 0 的时候(默认为0),焦点切换顺序依次是:

$('#example').DataTable({
    "tabIndex": 0
});

columnDefs #

Array

设置列定义初始化属性。

columns 参数很像,这个参数允许你给指定列设置选项,应用到一个或这多个列。而不像 columns 需要每列都要定义。

这个参数是一个列定义对象数组,通过使用 columnDefs.targets 选项,告诉 DataTables 是定义的是那一列。

示例:

禁止第一列参与搜索

$('#example').dataTable({
    "columnDefs": [{
        "targets": 0,
        "searchable": false
    }]
});

columnDefs.targets #

Array | String | Integer

指定一列或者多列。

使用 columnDefs 参数给列定义,用 columnDefs.targets 告诉这个定义是指向那一列或者那几列。

它可以是下列情况:

另外,targets 可以同时指定多列,接受一个数组(比如 targets: [ -1, -2 ])。

注意 columnDefs 需要和 columnDefs.targets 搭配使用,而 columns 可以单独使用,这是两者的不同处。

示例:

禁止第一列和第三列不能排序

$('#example').dataTable({
    "columnDefs": [{
        "targets": [ 0, 2 ],
        "orderable": false
    }]
});

列包含 nosort 类名的不排序

$('#example').dataTable({
    "columnDefs": [{
        "targets": 'nosort',
        "orderable": false
    }]
});

columns #

Array

设置列特殊的初始化属性。

在初始化的时候可以使用本参数来定义列,完整的参数参考下面的相关参数。

需要注意的是,如果是使用 columns 来定义列,那么你的 th 有多少,就要定义多个个(如果你不指定任何选项可以为 null)。

示例:

禁止第一列参与过滤(此表格有 5 列,其他列由于不指定选项,则为 null) ,下面两段代码是同样的效果

$('#example').dataTable({
    "columns": [
        { "searchable": false },
        null,
        null,
        null, 
        null
    ]
});
$('#example').dataTable({
    "columnDefs": [{
        "targets": 0,
        "searchable": false
    }]
});

columns.width #

String

定义列宽。

DataTables 会根据列内容自动计算列宽,通过设置 autoWidth 属性控制是否开启这个功能。

同样我们也可以自定义列宽:

$('#example').DataTable({
    "columns": [
        // 给第一列指定宽度为表格整个宽度的 20%
        { "width": "20%" },
        null,
        null,
        null,
        null
    ]
});

除了百分比,columns.width 还接受任何 css 值,比如 3em, 20px 等等:

$('#example').DataTable({
    "columns": [ 
        // 给第一列指定宽度为 10px 
        { "width": "10px" },
        null,
        null,
        null,
        null
    ]
});

需要注意的是,由于 table 本身还有样式,比如 td 有 margin,或者 padding 这些样式,以及 td 里本身的内容的限制,最终的宽度值和设置的值会有不匹配,比如设置的是 10px 实际要大于 10px。

columns.minWidth #

String

设置列的最小宽度。该配置项为组件新加功能。

在固定表格整个宽度时,表格默认的布局效果会自动压缩列,导致表格展示效果不理想;如果固定每列宽度并设置表格为固定布局(table-layout: fixed),会导致表格撑开容器。这时,可以通过设置 minWidth 解决该问题,和 autoWidth: truescrollX: true 配合使用,即可让表格在一定宽度范围内自适应。

设置值同 width

例子:

$('#example').DataTable({
    "columns": [ 
        // 给第一列指定宽度最小为 5 个字宽
        { "minWidth": "5em" },
        null,
        null,
        null,
        null
    ]
});

columns.visible #

Boolean

默认值:true

允许或者禁止列的显示。

DataTables 通过 column().visible() / columns().visible() 方法动态显示和隐藏列。此选项用来获取列的初始状态可见性,API 方法取得该状态稍后更改列的状态。

这个选项可能会特别有用,在你的表中包含大量的列,并且希望用户能够控制他们可以看到那些列,或者表中的数据最终不能被看到的时候。

例子:

$('#example').DataTable({
    "columns": [
        { "visible": false },
        null,
        null,
        null,
        null
    ]
});

columns.type #

String

设定该列的类型 - 在该列排序或者搜索的时候使用。

在客户端处理模式下,DataTables 可以自行处理用于显示和执行过滤、排序的数据。例如,执行过滤时会从匹配的字符串中删除 HTML 标记,而执行排序时可以移除货币符号以允许货币数值进行排序。格式化操作依赖于该列的类型以 标准化 数据来支持排序和搜索。

DataTables 拥有一些用于自动判断的内置类型:

上述类型已经覆盖了大部分的数据展示情况,但有时你的数据需要有其他类型或者更复杂的排序和搜索处理,可以通过插件的方式自行实现。

另外,作为优化,如果你已经知道了列的类型,可以通过设置该参数,以省去 DataTables 自动探测所花费的时间。

需要注意的是,如果你当前是在服务端模式下(serverSide: true),服务端实现排序和搜索,该参数将失效。

例子:

$('#example').dataTable({
    "columns": [
        { "type": "html" },
        null,
        null,
        null,
        null
    ]
});

columns.title #

String

默认值:从列的表头单元格获取数据

设置列的标题。

列的标题一般是从 DOM 中读取( thead 中的单元格),你也可以使用 title 覆写列标题。你还可以使用这个属性为表格创建列标题(可以在 table 标签下不创建 th 标签 )。

请注意,该属性只能创建标简单的表头(单个单元格),复杂的表头(带有 colspan ,rowspan 属性 )不能通过此属性配置,只能事先在 table 标签下创建好,或者使用标准的 dom/jQuery 方法去构造。

例子:

设置第一列的标题

$('#example').DataTable({
    "columns": [
        { "title": "My column title" }, 
        null, 
        null, 
        null, 
        null
    ]
});

columns.name #

String

给列设置一个描述名称。

当时使用 DataTables API 时,你也许希望能够处理各个列(比如总计一列的数字总和),DataTables 有 两种基本的方法来标记列:

使用 columns.name 配置,可以使 API 操作列变得非常方便。比如访问一列的数据,你可以这样使用 table.column('location:name').data() 这里有两个关键点:

更多关于列选择器操作的文档请参考 columns() 方法。

例子:

给 1,2,3,4,5 列分别指定 engine,browser,platform,version,grade 名称

$('#example').DataTable({
    "columns": [
        { "name": "engine" },
        { "name": "browser" },
        { "name": "platform" },
        { "name": "version" },
        { "name": "grade" }
    ]
});

columns.cellType #

String

默认值:td

为创建列设置单元格类型。

创建列的时候改变单元格的类型,要么是 td 要么是 th

单元格类型为 th 时很有用,因为在表格的 tbody 里有特殊的意义,允许它作为行的标题(你也许希望通过 columns.createdCell 选项添加 scope='row' 属性到 th 上)。

例子:

第一列使用 th 单元格

$('#example').DataTable({
    "ajax": "json.txt", 
    "columns": [
        { "cellType": "th" },
        null,
        null,
        null,
        null
    ]
});

columns.className #

String

给列中每个单元格指定一个或多个 class。

简单来说,这个属性就是给一列中的每个单元格指定一个 class,不管表格的数据源是 dom,JavaScript 或者 Ajax。这个对于你想给一列定义一个样式很有用。

例子:

给第一列的每一个单元格指定一个 my_class 和 my_class2 的样式

$('#example').DataTable({
    "columns": [
        { className: "my_class my_class2" },
        null,
        null,
        null,
        null
    ]
});

columns.contentPadding #

String

当表格计算最佳值为文本内容添加填充(padding)。

关于这个属性首先要说的是,通常情况下你应该不会使用。

话虽如此,在罕见的情况下还是会用到这个属性。当 DataTables 计算要分配给每列的列宽时,它会在每列中找到最长的字符串,然后构造一个临时表,并从中读取宽度。这样做的问题是 "mmm""iiii" 大得多,但后者是一个较长的字符串,因此计算可能出错(做好并且放到 dom 对象中测量是非常慢的),因此作为解决方案提供了这个属性。 它会将其值附加到发现为列的最长字符串的文本中,即填充。

例子:

$('#example').DataTable({
    "columns": [
        null,
        null,
        null,
        { "contentPadding": "mmm" }
    ]
});

columns.createdCell #

Function

单元格创建回调以允许操作 DOM。

从 Ajax 数据源或 dom 数据源读取数据创建单元格执行的回调函数。当单元格被创建的同时允许使用。

columns.render 选项补充操作单元格的 dom 元素,比如添加背景色 (在表格初始化的时候,如果开启了 deferRender,单元格也许不会立马被创建 ,或者你的行是使用API rows.add() 方法动态添加的)

这个是选项是和 createdRow 回调方法相对应的

回调方法参数:

名称 类型 描述
cell Node 已经创建的 td 节点。
cellData Any 单元格的数据,如果你使用了 columns.render 去修改数据,使用 $(cell).html() 得到渲染后的数据。这里的数据是来自数据源里没有修改过的原始数据。
rowData Any 整行的数据对象,可能是 Object 或者 Array。
rowIndex Integer DataTables 内部的行索引。
colIndex Integer DataTables 内部的列索引。

例子:

使用 columnDefs 配置 createdCell 操作 dom 元素 当单元格的值小于 1 的时候,加红

$('#example').DataTable({
    "columnDefs": [{
        "targets": 3,
        "createdCell": function (td, cellData, rowData, row, col) { 
            if ( cellData < 1 ) {
                $(td).css('color', 'red')
            }
        }
    }]
});

columns.defaultContent #

String

给单元格设置静态默认内容,这个属性不得不说是非常有用的,提到这个大家还可以看看 columns.render 属性,能够实现更复杂的内容。

我们返回的数据不能保证都是正常的,可能包含 null ,显然这个对于最终用户来说是不友好的,那么我们可以这么处理:

//示例数据
{
    data:[
        {
            "id":1,
            "email":"thxopen@datatables.club",
            "office":"Chengdu",
            "first_name":null
        }
    ]
}

$('#example').DataTable({
    "columns": [
        null,
        null,
        null,
        {
            "data": "first_name",
            // 为 null 或者 undefined 给出友好的提示, 还没有设置 "defaultContent": "<i>还没有设置</i>"
        }
    ]
});

当然 defaulContent 的用法还可以再强大点,比如给最后一列添加编辑按钮

//使用 columnDefs 指定
$('#example').DataTable({
    "columnDefs": [
        {
            "data": null,
            "defaultContent": "<button>编辑</button>",
            "targets": -1  // 这里 -1 代表最后一列
        }
    ]
});

// 使用 columns 指定
$('#example').dataTable({
    "columns": [
        null,
        null,
        null,
        {
            "data": null,
            "defaultContent": "<button>编辑</button>"
        }
    ]
});

columns.data #

Integer | String | null | Object | Function

设置列的数据源,即如何从整个 Table 的数据源(Object/Array)中获得。

data 可以处理以下三种情况的值:

需要注意的是 columns.data 既可以获取数据,又可以写(改变)数据,如果你仅仅想要为输出格式化数据,可以使用 columns.render 配置项。

integer类型 #

作为数组索引的数据来源,DataTables 默认(每一列递增)。

string类型 #

从数据源中读取或修改一个对象属性。有是三个特殊的选项可以改变 DataTables 读取数据源中的对象:

null类型 #

当设置 null 类型数据时,会默认使用 columns.rendercolumns.defaultContent 渲染列内容。

object类型 #

DataTables 要求使用不同数据给不同的数据类型( filter, display, type, sort )。提到属性名称就是对应的属性名,他的值可以被定义为 integer,string 或者 function,规则就像 columns.render 做的一样。

注意,_ 选项可以被定义。当你没有指定数据类型时,这个 被当做默认值交给 DataTables 处理。如果 _ 选项没有被选择数据类型指定到数据列,那么 columns.data 将会被使用。

看下面的数据例子:

"data": "phone",
"render": {
    "_": "plain",
    "filter": "filter",
    "display": "display"
}
function类型 #

如果做为一个 function,那么每当 DataTables 从 columns 中的 cell 获取数据时,都需要执行该方法。注意,该方法会被多次调用,根据不同的数据类型,比如 sorting(排序)、filtering(过滤)和 display(显示)。

需要注意的是:DataTables 仅会在每行数据是从 DOM 中获取时才会在每次添加新行时将该方法作为设置方法每次都调用(比如表格是通过 HTML 初始化的)。当数据源是通过 JavaScript 或 Ajax 获取时不会每次都调用。

参数:

名称 类型 描述
rowData Array|Object 整个 row 的数据。
type String 数据类型 - 有这些值:filterdisplaytypesort
set Any type 参数是 'set' 时用于设置,否则,为 undefined。
meta Object 从 1.10.1 版开始: 一个对象包含了单元格的附加信息. 对象包含如下属性:
  • row - 被请求的单元格行的索引。参考 row().index()
  • col - 被请求的单元格列的索引。参考 column().index()
  • settings - DataTables 设置对象

返回:当 type'set' 时不需要返回值,否则,返回的数据被用作 DataTables 最终使用的数据。

例子:

从一个对象中获取数据

// JSON structure for each row in this example:
//   {
//      "engine": {value},
//      "browser": {value},
//      "platform": {value},
//      "version": {value},
//      "grade": {value}
//   }
$('#example').dataTable({
    "ajaxSource": "sources/objects.txt",
    "columns": [
        { "data": "engine" },
        { "data": "browser" },
        { "data": "platform" },
        { "data": "version" },
        { "data": "grade" }
    ]
});

从一个嵌套对象中获取值

// JSON structure for each row:
//   {
//      "engine": {value},
//      "browser": {value},
//      "platform": {
//         "inner": {value}
//      },
//      "details": [
//         {value}, {value}
//      ]
//   }
$('#example').dataTable({
    "ajaxSource": "sources/deep.txt",
    "columns": [
        { "data": "engine" },
        { "data": "browser" },
        { "data": "platform.inner" },
        { "data": "platform.details.0" },
        { "data": "platform.details.1" }
    ]
});

从 DOM 中读取数据源

$('#example').DataTable({
    "columns": [
        { "data": "name" },
        { "data": "position" },
        { "data": "office" },
        { "data": "age" },
        { "data": "start_date" },
        { "data": "salary" }
    ]
});

通过使用 function 类型提供排序、过滤、和显示的不同内容。下面的例子是处理货币单位:

$('#example').dataTable({
    "columnDefs": [{
        "targets": 0,
        "data": function ( row, type, val, meta ) {
            if (type === 'set') {
                row.price = val;
                // Store the computed display and filter values for efficiency
                row.price_display = val=="" ? "" : "$"+numberFormat(val);
                row.price_filter  = val=="" ? "" : "$"+numberFormat(val)+" "+val;
                return;
            }
            else if (type === 'display') {
                return row.price_display;
            }
            else if (type === 'filter') {
                return row.price_filter;
            }
            // 'sort', 'type' and undefined all just use the integer
            return row.price;
        }
    }]
});

使用默认内容

$('#example').dataTable({
    "columnDefs": [{
        "targets": [ 0 ],
        "data": null,
        "defaultContent": "Click to edit"
    }]
});

使用数组符号

$('#example').dataTable({
    "columnDefs": [{
        "targets": [ 0 ],
        "data": "name[, ]"
    }]
});

columns.orderable #

Boolean

默认值:true

开启/禁用这列是否排序。

使用这个参数可以控制用户是否能够操作该列排序。对于有些生成的列你并不想让用户对其排序,比如索引列,或者操作列(删除,编辑按钮)。

注意,这个参数只是不允许用户进行列的排序操作,作为开发人员,你任然可以使用 order 配置项或者 order() API 方法对列进行排序。

例子:

配置第一列不允许排序

$('#example').DataTable({
    "columns": [
        { "orderable": false },
        null,
        null,
        null,
        null
    ]
});

columns.orderData #

Integer | Array

定义多个列的排序作为一列的默认顺序。

设为 Integer 类型参数时,使用单列索引去排序。

设为 Array 类型参数时,使用多列索引来定义多列排序。

这里有一个例子,表格中有一列是图片,你最终显示的数据是不能直接排序的,但是你可以使用元数据对其进行排序(比如文件名)。 关于 orthogonal data(数据和显示分离)可以参考 示例

例子:

$('#example').DataTable({
    "columns": [
        { "orderData": [ 0, 1 ] },
        { "orderData": 0 },
        { "orderData": [ 2, 3, 4 ] },
        null,
        null
    ]
});

columns.orderDataType #

String

给列分配实时 DOM 排序类型。

DataTables 主要的排序功能( ordering 特性)是利用已经缓存在内存中的数据,而不是每次读取 DOM 的数据来排序,考虑到从 DOM 读取本来就很慢。然后有时候又不得不从 DOM 中读取数据,比如表格中有表单元素,这势必也会影响到性能。提供这个属性是为了插件在 DataTables 能提供此功能。

请注意,DataTables没有内置这个插件,他必须单独引用。查看 DataTables 排序插件页面 获取更多信息。

例子:

设置实时排序类型 下面给出了一个表格包含了form表单元素的排序例子

$('#example').DataTable({
    "columns": [
        null,
        null,
        { "orderDataType": "dom-text" },
        { "orderDataType": "dom-text", "type": "numeric" },
        { "orderDataType": "dom-select" },
        { "orderDataType": "dom-checkbox" }
    ]
});

columns.orderSequence #

Array

默认值:[ 'asc', 'desc' ]

定义列排序的方向。

可以使用这个参数来控制默认的排序方向,甚至改变排序处理的行为(比如仅允许升序排列)。

例子:

$('#example').DataTable({
    "columns": [
        null,
        { "orderSequence": [ "asc" ] },
        { "orderSequence": [ "desc", "asc", "asc" ] },
        { "orderSequence": [ "desc" ] },
        null
    ]
});

columns.searchable #

Boolean

默认值:true

开启或者关闭此列中数据过滤。

使用此参数,你可以定义 DataTables 是否在表中的过滤数据包含此列。或许你可以用这个参数来禁止操作列不被包含(比如编辑,删除按钮操作列)。

例子:

设置第一列不参与过滤

$('#example').DataTable({
    "columns": [
        { "searchable": false },
        null,
        null,
        null,
        null
    ]
});

columns.render #

Integer | String | Object | Function

渲染(处理)数据显示在表格中。

这个属性可以操作从数据源读取到的数据。columns.rendercolumns.data 比较像,可以说前者是只读,后者稍微复杂点可以读可以写。

columns.render 可以看做为把请求过来的数据做进一步的处理,比较常见的操作有格式化、字符串替换、字符串截取等等其他处理数据的方式。DataTables 把不同数据的不同操作叫做 orthogonal-data(正交数据),并允许不同形式的相同数据做不同的操作(例如,日期字段给用户是以'yyyy-MM-dd hh:mi:ss'格式显示和搜索,但是以long型作为排序)。

有三种特殊的值可以通过 columns.render 解决:

数组使用 #

当使用如下格式的数据时,该选项可以访问数据中多个和一个元素。你需要理解这两种不同形式之间的区别。

看如下结构的数据:

"access": [
    { "id": "1", "name": "Printer" },
    { "id": "3", "name": "Desktop" },
    { "id": "4", "name": "VMs" }
]

显示 name 属性在单个的 cell 中,使用 access[, ].name - 将会得到使用 ,连接的字符串 - e.g. 在这个情况下结果将是 Printer, Desktop, VMs

显示单个的属性,使用 .{index},还是以上面的数据结构,现在要显示数组里的一条数据里的 name, 使用 access.0.name - e.g. 在这个情况下得到的结果是 Printer

integer类型 #

作为数组索引的数据来源,DataTables 默认(每一列递增)。

string类型 #

从数据源中读取一个对象属性。有是三个特殊的选项可以改变 DataTables 读取数据源中的对象:

object类型 #

DataTables 要求使用不同数据给不同的数据类型( filter, display, type, sort )。提到属性名称就是对应的属性名,他的值可以被定义为 integer,string 或者 function,规则就像 columns.render 做的一样。

注意,_ 选项可以被定义。当你没有指定数据类型时,这个 被当做默认值交给 DataTables 处理。如果 _ 选项没有被选择数据类型指定到数据列,那么 columns.data 将会被使用。

看下面的数据例子:

"data": "phone",
"render": {
    "_": "plain",
    "filter": "filter",
    "display": "display"
}
function类型 #

如果做为一个 function,那么每当 DataTables 从 columns 中的 cell 获取数据时,都需要执行该方法。注意,该方法会被多次调用,根据不同的数据类型,比如 sorting(排序)、filtering(过滤)和 display(显示)。

参数:

名称 类型 描述
data Any 当前cell的值(基于 columns.data )。
type String 数据类型 - 有这些值:filterdisplaytypesort
rowData Any 整个 row 的数据(不基于 columns.data )。
meta Object 从 1.10.1 版开始: 一个对象包含了单元格的附加信息. 对象包含如下属性:
  • row - 被请求的单元格行的索引。参考 row().index()
  • col - 被请求的单元格列的索引。参考 column().index()
  • settings - DataTables 设置对象

返回:方法返回的数据被用作 DataTables 最终使用的数据。

例子:

从一个对象数组创建一个逗号分隔的字符串

/*
{
    "browser":"chrome",
    "engine":"webkiet",
    "platform": [
        { "id": "1", "name": "windows" },
        { "id": "3", "name": "linux" },
        { "id": "4", "name": "mac" }
    ]
}
*/
$('#example').dataTable({
    "ajaxSource": "sources/deep.txt",
    "columns": [
        { "data": "engine" },
        { "data": "browser" },
        {
            "data": "platform",
            "render": "[, ].name"
        }
    ]
});

作为一个对象,提取不同类型不同的数据

// This would be used with a data source such as:
//  { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368", ... }
// Here the `phone` integer is used for sorting and type detection, while `phone_filter`
// (which has both forms) is used for filtering for if a user inputs either format, while
// the formatted phone number is the one that is shown in the table.
$('#example').dataTable({
    "columnDefs": [{
        "targets": 0,
        "data": null, // Use the full data source object for the renderer's source
        "render": {
            "_": "phone",
            "filter": "phone_filter",
            "display": "phone_display"
        }
    }]
});

如上,phone 是对象的话:

// This would be used with a data source such as:
//  "phone": { "plain": 5552368, "filter": "5552368 555-2368", "display": "555-2368" }
$('#example').dataTable({
    "columnDefs": [{
        "targets": 0,
        "data": 'phone',
        "render": {
            "_": "plain",
            "filter": "filter",
            "display": "display"
        }
    }]
});

根据数据源的数据替换成超链接

$('#example').dataTable({
    "columnDefs": [{
        "targets": 0,
        "data": "download_link",
        "render": function ( data, type, full, meta ) {
            return '<a href="'+data+'">Download</a>';
        }
    }]
});

当字符串太长的时候显示点点

$('#example').dataTable({
    "columnDefs": [{
        "targets": 4,
        "data": "description",
        "render": function ( data, type, full, meta ) {
            return type === 'display' && data.length > 40 ?
            '<span title="'+data+'">'+data.substr( 0, 38 )+'...</span>' :
            data;
        }
    }]
});

使用一个对象实例作为数据源的行

function Person( name, age, position ) {
    this._name     = name;
    this._age      = age;
    this._position = position;

    this.name = function () {
        return this._name;
    };

    this.age = function () {
        return this._age;
    };

    this.position = function () {
        return this._position;
    };
}

$(document).ready(function() {
    var table = $('#example').DataTable({
        columns: [
            { data: null, render: 'name' },
            { data: null, render: 'age' },
            { data: null, render: 'position' }
        ]
    });

    table.row.add( new Person( 'Airi Satou',     33, 'Accountant' ) );
    table.row.add( new Person( 'Angelica Ramos', 47, 'Chief Executive Officer (CEO)' ) );
    table.row.add( new Person( 'Ashton Cox',     66, 'Junior Technical Author' ) );
    table.draw();
} );

字符如果太长,截取显示

//初始化表格
var oTable = $("#example").DataTable({
    ajax: {
        url: "dataList.action",
        data: {
            args1: "我是固定传参的值,在服务器接收参数[args1]"
        }
    },
    columns: [{
        data: "content",
        render: function(data, type, row, meta) {
            //type 的值  dispaly sort filter
            //代表,是显示类型的时候判断值的长度是否超过8,如果是则截取
            //这里只处理了类型是显示的,过滤和排序返回原始数据
            if (type === 'display') {
                if (data.length > 8) {
                    return '<span title="' + data + '">' + data.substr(0, 7) + '...</span>';
                } else {
                    return '<span title="' + data + '>' + data + '</span>';
                }
            }
            return data;
        }
    }]
});

字符如果太长,截取显示 (css实现)

/* 单元格连续纯字母数字强制换行显示 */
.wordwrap{
    word-wrap: break-word;
    word-break: break-all;
    overflow: hidden;
}
/* 超长文字单元格省略号显示 */
.ellipsis{
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
}

//初始化表格
var oTable = $("#example").DataTable({
    ajax: {
        url: "dataList.action",
        data: {
            args1: "我是固定传参的值,在服务器接收参数[args1]"
        }
    },
    columns: [
        {
            data: "content", class: "wordwrap ellipsis"
        }
    ]
});

language #

Object

DataTables 显示语言设置。

DataTables 显示的所有附加的文本信息可通过该参数配置,默认值如下:

{
    "decimal":        "",
    "emptyTable":     "No data available in table",
    "info":           "Showing _START_ to _END_ of _TOTAL_ entries",
    "infoEmpty":      "Showing 0 to 0 of 0 entries",
    "infoFiltered":   "(filtered from _MAX_ total entries)",
    "infoPostFix":    "",
    "thousands":      ",",
    "lengthMenu":     "Show _MENU_ entries",
    "loadingRecords": "Loading...",
    "processing":     "Processing...",
    "search":         "Search:",
    "zeroRecords":    "No matching records found",
    "paginate": {
        "first":      "First",
        "last":       "Last",
        "next":       "Next",
        "previous":   "Previous"
    },
    "aria": {
        "sortAscending":  ": activate to sort column ascending",
        "sortDescending": ": activate to sort column descending"
    }
}

language.url #

String

从远程地址中加载语言信息。

$('#example').dataTable({
    "language": {
        "url": "/dataTables/i18n/de_de.lang"
    }
});

language.zeroRecords #

String

默认值:'No matching records found'

当搜索结果为空时,显示的信息。

例子:

$('#example').dataTable({
    "language": {
        "zeroRecords": "No records to display"
    }
});

language.thousands #

String

默认值:','

千位的分隔符。

例子:

设置千分符为 '

$('#example').dataTable({
    "language": {
        "thousands": "'"
    }
});

language.searchPlaceholder #

String

默认值:''

设置搜索框(input)的 placeholder 属性值。

例子:

$('#example').dataTable({
    language: {
        search: "_INPUT_",
        searchPlaceholder: "Search..."
    }
});

language.search #

String

默认值:'Search:'

搜索框的提示信息。

可以包含标记 _INPUT_,将替换显示为过滤输入框。如果不包含 _INPUT_,过滤输入框将自动添加到字符串的后面。

例子:

改变搜索框提示信息,并在后面自动添加输入框

$('#example').dataTable({
    "language": {
        "search": "Filter records:"
    }
});

自定义搜索框位置

$('#example').dataTable({
    "language": {
        "search": "Apply filter _INPUT_ to table"
    }
});

language.processing #

String

默认值:'Processing...'

当 table 处理用户处理信息时,显示的信息字符串。

例子:

$('#example').dataTable({
    "language": {
        "processing": "DataTables is currently busy"
    }
});

language.paginate #

Object

分页信息显示所需的字符串的所有信息。

language.paginate.previous #

String

默认值:'Previous'

分页信息的 'previous' 按钮显示的信息。

需要注意的是,如果内容中包含 <>,需要用对应的实体名称 &lt;&gt; 代替。

例子:

$('#example').dataTable({
    "language": {
        "paginate": {
            "previous": "&laquo;"
        }
    }
});

language.paginate.next #

String

默认值:'Next'

分页信息的 'next' 按钮显示的信息。

需要注意的是,如果内容中包含 <>,需要用对应的实体名称 &lt;&gt; 代替。

例子:

$('#example').dataTable({
    "language": {
        "paginate": {
            "next": "&raquo;"
        }
    }
});

language.paginate.last #

String

默认值:'Last'

分页信息的 'last' 按钮显示的信息。

需要注意的是,如果内容中包含 <>,需要用对应的实体名称 &lt;&gt; 代替。

例子:

$('#example').dataTable({
    "language": {
        "paginate": {
            "last": "Last page"
        }
    }
});

language.loadingRecords #

String

默认值:'Loading...'

加载数据时的提示信息 - 当 Ajax请求数据时显示。

例子:

$('#example').dataTable({
    "ajax": "json.txt",
    "language": {
        "loadingRecords": "Please wait - loading..."
    }
});

language.lengthMenu #

String

默认值:'Show _MENU_ entries'

'每页显示记录'的下拉框的提示信息。

可以包含标记 _MENU_,将替换显示为下拉框。

例子:

修改 '每页显示记录' 的下拉框的提示信息

$('#example').dataTable({
    "language": {
        "lengthMenu": "Display _MENU_ records"
    }
});

也可以自定义下拉框内容

$('#example').dataTable({
    "language": {
        "lengthMenu": 'Display <select>'+
          '<option value="10">10</option>'+
          '<option value="20">20</option>'+
          '<option value="30">30</option>'+
          '<option value="40">40</option>'+
          '<option value="50">50</option>'+
          '<option value="-1">All</option>'+
          '</select> records'
    }
});

language.info #

String

默认值:'Showing _START_ to _END_ of _TOTAL_ entries'

表格的 page 分页所需显示的所有字符串。

可以包含以下标记:

例子:

显示页码信息

$('#example').dataTable({
    "language": {
        "info": "Showing page _PAGE_ of _PAGES_"
    }
});

language.infoEmpty #

String

默认值:'Showing 0 to 0 of 0 entries'

当表格没有数据时,汇总地方显示的字符串。

例子:

$('#example').dataTable({
    "language": {
        "infoEmpty": "No entries to show"
    }
});

language.infoFiltered #

String

默认值:'(filtered from _MAX_ total entries)'

当表格搜索后,在汇总字符串上需要增加的内容。

可以包含标记 _MAX_,将替换为表格过滤前的记录条数。

例子:

$('#example').dataTable({
    "language": {
        "infoFiltered": " - filtered from _MAX_ records"
    }
});

language.infoPostFix #

String

默认值:'Empty string'

在汇总字符串上始终增加的字符串。

例子:

$('#example').dataTable({
    "language": {
        "infoPostFix": "All records shown are derived from real information."
    }
});

language.emptyTable #

String

默认值:'No data available in table'

当表格没有数据时,表格所显示的字符串。

例子:

$('#example').dataTable({
    "language": {
        "emptyTable": "No data available in table"
    }
});

language.decimal #

String

默认值:''

小数点表示字符(有些文化中用 "," 表示小数点)。

默认情况下 DataTables 会使用一个点 . 表示小数点。

例子:

检测并为数字使用逗号表示小数点

$('#example').dataTable({
    "language": {
        "decimal": ","
    }
});

检测并为数字使用短横线表示小数点

$('#example').dataTable({
    "language": {
        "decimal": "-",
        "thousands": "."
    }
});

language.aria #

Object

Language strings used for WAI-ARIA(无障碍网页应用)specific attributes。

language.aria.sortAscending #

String

默认值:': activate to sort column ascending'

Language strings used for WAI-ARIA(无障碍网页应用) specific attributes

例子:

$('#example').dataTable({
    "language": {
        "aria": {
            "sortAscending": " - click/return to sort ascending"
        }
    }
});

language.aria.sortDescending #

String

默认值:': activate to sort column descending'

Language strings used for WAI-ARIA(无障碍网页应用)specific attributes。

例子:

$('#example').dataTable({
    "language": {
        "aria": {
            "sortDescending": " - click/return to sort descending"
        }
    }
});

language.aria.paginate.first #

String

首页( first )按钮的 WAI-ARIA 标签。

该属性能够给首页(first)分页按钮设置 ARIA 标签属性。 在你希望显示一个类似 « 图标在按钮本身,同时又保持好的访问体验的情况时很有用。

例子:

定义分页按钮为带 ARIA 标签文字的图标

$('#example').DataTable({
    pagingType: 'full',
    language: {
        paginate: {
            first: '«',
            previous: '‹',
            next: '›',
            last: '»'
        },
        aria: {
            paginate: {
                first: 'First',
                previous: 'Previous',
                next: 'Next',
                last: 'Last'
            }
        }
    }
});

API #

DataTables 有一个强大的 api,用来处理表格上的数据,你可以添加数据到已经存在的表格,或者对已经存在的数据进行操作。 API旨在能够很好地操作表格中的数据。

API 实例可以通过以下方式创建:

上面三种方式均可返回一个 api 实例,注意区别 $( selector ).DataTable()$( selector).dataTable() 前者直接返回API实例,后者返回的是jQuery实例(如果是这个方式初始化 DataTables,那么返回的对象不能使用 api 方法,不然会报方法未定义)。

关于 api 的说明,你可以可以参考 api手册

核心(Core) #

ajax.reload() #

重新加载数据。

这个方法提供了使用已经定义的url重新请求服务器取回数据给表格显示,如果你需要更改请求路径可以使用 ajax.url()

参数:

返回:

DataTables Api 实例。

示例:

每 30 秒重新加载表数据(分页重置)

var table = $('#example').DataTable({
    ajax: "data.json"
});

setInterval(function () {
    table.ajax.reload();
}, 30000);

每 30 秒重新加载表数据(分页留存)

var table = $('#example').DataTable({
    ajax: "data.json"
});

setInterval(function () {
    table.ajax.reload(null, false); // 刷新表格数据,分页信息不会重置
}, 30000);

使用回调函数来更新外部元素

var table = $('#example').DataTable();

table.ajax.reload(function (json) {
    //这里的json返回的是服务器的数据
    $('#myInput').val(json.lastInput);
});
ajax.url() #

获取/设置新的 url 数据源。

你可以使用 ajax.reload() 方法来刷新表格数据,但是在某些情况下你需要重新设置其他的数据源,那个时候这个方法会帮到你。

注意,使用 ajax.url() 方法只能设置新的 url,并不会触发 Ajax 请求,你需要使用 ajax.url().load() 方法来更换 url 并重新获取数据。

参数:

返回:

省略 url 参数时,返回当前数据源的 url 字符串。否则,返回 DataTables Api 实例。

示例:

得到当前 url

var table = $('#example').DataTable({
    ajax: 'data.json'
});

alert('Data source: '+table.ajax.url()); // 将打印 'Data source: data.json'

设置新的数据源,并立即加载

var table = $('#example').DataTable({
    ajax: "data.json"
});

table.ajax.url('newData.json').load();
draw() #

重绘表格。

当你执行比如添加、删除、改变排序、筛选或者分页这些操作时,你希望 DataTables 显示更新,那么这个函数就是为此准备的。

注意,当这个方法执行后,会重新排序和过滤。

参数:

返回:

DataTables Api 实例。

示例:

自定义一个 input 框作为搜索条件过滤表格数据

var table = $('#example').DataTable();

$('#myFilter').on('keyup', function () {
    table
        .search(this.value)
        .draw();
});

排序,然后重绘表格并维持当前分页的信息

var table = $('#example').DataTable();
// Sort by column 1 and then re-draw 
table.order([[ 1, 'asc' ]]).draw(false);

改变分页信息

var table = $('#example').DataTable();
table.page('next').draw(false);
$() #

在整个表格里执行(完成)一个 jQuery 选择器操作。

DataTables 使用了大量的 DOM 操作,比如从 document 移除行来实现分页和过滤,从 document 中移除列实现列的可见性,还有一些其他的操作。当你使用标准的 jQuery 操作时,你是不能找到这些已经被移除的 DOM 元素。因为在 DataTables 的操作下,这些元素已经从 document 中移除。

参数:

返回:

匹配元素的 jQuery 对象结果集。

示例:

在表格里找到所有包含 'High' 内容的单元格然后加上一个 class

var table = $('#example').DataTable();
table.$(':contains("High")').addClass('important');
page() #

获取/设置表格的当前页。

分页是 DataTables 的一个核心特性,该方法提供了手动的控制页面的显示。

注意:如果你视图操作一个不存在的页数,DataTables 不会抛出错误,而是重置到第一页。

还需要注意的是,使用 page() 时需要搭配 draw() 方法一起使用,比如 table.page(0).draw(false);

另外,这里需要加 falsedraw() 方法里,没有这个参数,表格会做一个完全的重绘,并且回到第一页。

参数:

返回:

省略 set 参数时,返回当前页数。否则,返回 DataTables Api 实例。

示例:

自定义控制页面的操作

var table = $('#example').DataTable(); 
$('#next').on('click', function () {
    table.page('next').draw(false);
}); 
$('#previous').on('click', function () {
    table.page('previous').draw(false);
});
page.len() #

获取/设置表格的分页长度

这个方法仅仅就是设置/获取分页的长度,需要 paging 是打开的。

一个特别的数字 -1 可以作为参数,代表是所有的数据。

同样这个需要配合 draw() 方法才能应用到表格上。比如 table.page.len(10).draw();

参数:

返回:

省略 set 参数时,返回当前页长度。否则,返回 DataTables Api 实例。

注意:如果当前api实例里有多个表格对象,那么返回的是第一个对象的当前页,你应该使用来确保操作的是单个表格对象

例子:

用户自定义显示分页长度,是显示 10 条还是显示所有

var table = $('#example').DataTable();

$('#all').on('click', function () {
    table.page.len(-1).draw();
});

$('#_10').on('click', function () {
    table.page.len(10).draw();
});
ajax #

ajax方法的命名空间。

请参考原官方地址的 ajax API。

ajax.json() #

获得最终的 JSON 数据。

请参考原官方地址的 ajax.json() API。

ajax.params() #

获得最终请求到服务器的参数。

请参考原官方地址的 ajax.params() API。

clear() #

清除表格里所有数据。

请参考原官方地址的 clear() API。

data() #

获得表格中所有数据。

请参考原官方地址的 data() API。

destroy() #

销毁当前上下文中的 DataTables 实例。

请参考原官方地址的 destroy() API。

on() #

打开表格的监听事件。

请参考原官方地址的 on() API。

one() #

监听一次表格事件。

请参考原官方地址的 one() API。

off() #

移除表格的监听事件。

请参考原官方地址的 off() API。

order() #

获得表格当前的排序列或者是设置表格那些列排序。

请参考原官方地址的 order() API。

order.listener() #

给任意一个元素添加一个排序的监听。

请参考原官方地址的 order.listener() API。

search() #

搜索表格里的数据。

请参考原官方地址的 search() API。

settings() #

获得表格的设置对象。

请参考原官方地址的 settings() API。

state() #

得到表格最后存储的状态。

请参考原官方地址的 state() API。

state.clear() #

清楚表格储存的状态。

请参考原官方地址的 state.clear() API。

state.loaded() #

表格初始化的时候读取之前的状态。

请参考原官方地址的 state.loaded() API。

state.save() #

保存表格的当前状态。

请参考原官方地址的 state.save() API。

单元格(Cells) #

cell() #

从表格中选择一个单元格。

请参考原官方地址的 cell() API。

cell().data() #

获取/设置被选择的单元格的数据。

请参考中文网地址的 cell().data() API。

cell().index() #

获取被选择的单元格的索引信息。

请参考中文网地址的 cell().index() API。

cell().cache() #

获取被选择的单元格的缓存数据。

请参考中文网地址的 cell().cache() API。

cell().invalidate() #

废除被选中单元格保持在 DataTables 内部数据中的数据。

请参考中文网地址的 cell().invalidate() API。

cell().render() #

获得渲染过的单元格数据。

请参考原官方地址的 cell().render() API。

cell().node() #

获得选中单元格的 dom。

请参考原官方地址的 cell().node() API。

cells() #

从表格中选择多个单元格。

请参考原官方地址的 cells() API。

cells().data() #

获取选中的多个单元格值。

请参考原官方地址的 cells().data() API。

cells().indexes() #

获得选中的多个单元格的索引信息。

请参考原官方地址的 cells().indexes() API。

cells().cache() #

从缓存里获取选中多个单元格的数据。

请参考原官方地址的 cells().cache() API。

cells().invalidate() #

废除被选中的多个单元格保持在 DataTables 内部数据中的数据。

请参考原官方地址的 cells().invalidate() API。

cells().render() #

获得渲染过的多个单元格数据。

请参考原官方地址的 cells().render() API。

cells().nodes() #

获得选中的多个单元格的 dom。

请参考原官方地址的 cells().nodes() API。

列(Columns) #

column() #

在表格上选择一列。

请参考原官方地址的 column() API。

column.index() #

Convert between column index formats(不明白用意)。

请参考原官方地址的 column.index() API。

column().index() #

获得选中列的索引。

请参考原官方地址的 column().index() API。

column().cache() #

从缓存的数据里获取选中的列。

请参考原官方地址的 column().cache() API。

column().data() #

获取选中列单元格的值。

请参考原官方地址的 column().data() API。

column().dataSrc() #

获取选中列数据源的属性名。

请参考原官方地址的 column().dataSrc() API。

column().header() #

获得选中列 header 的 node。

请参考原官方地址的 column().header() API。

column().footer() #

获得选中列 footer 的 node。

请参考原官方地址的 column().footer() API。

column().nodes() #

获得选中列所有单元格 node。

请参考原官方地址的 column().nodes() API。

column().order() #

给指定列排序。

请参考原官方地址的 column().order() API。

column().search() #

在指定列搜索。

请参考原官方地址的 column().search() API。

column().visible() #

获得那些列隐藏或者设置指定列隐藏。

请参考原官方地址的 column().visible() API。

columns() #

从表格选择多列。

请参考原官方地址的 columns() API。

columns.adjust() #

重新计算列宽。

请参考原官方地址的 columns.adjust() API。

columns().cache() #

获取表格缓存里被选中的列。

请参考原官方地址的 columns().cache() API。

columns().data() #

获取被选中列的单元格数据。

请参考原官方地址的 columns().data() API。

columns().dataSrc() #

获取选中列的数据源属性名称。

请参考原官方地址的 columns().dataSrc() API。

columns().header() #

获取选中列 header 的 nodes。

请参考原官方地址的 columns().header() API。

columns().footer() #

获取选中列 footer 的 nodes。

请参考原官方地址的 columns().footer() API。

columns().indexes() #

获取选中列的索引。

请参考原官方地址的 columns().indexes() API。

columns().nodes() #

获取选中列单元格 nodes。

请参考原官方地址的 columns().nodes() API。

columns().order() #

给选中列排序。

请参考原官方地址的 columns().order() API。

columns().search() #

在指定列搜索。

请参考原官方地址的 columns().search() API。

columns().visible() #

得到隐藏列或者设置隐藏列。

请参考原官方地址的 columns().visible() API。

行(Rows) #

row() #

获取一行。

请参考原官方地址的 row() API。

row.add() #

添加一行。

请参考原官方地址的 row.add() API。

row().cache() #

获取缓存里行的数据。

请参考原官方地址的 row().cache() API。

row().child #

子行方法命名空间。

请参考原官方地址的 row().child API。

row().child.show() #

显示子行。

请参考原官方地址的 row().child.show() API。

row().child.hide() #

隐藏子行。

请参考原官方地址的 row().child.hide() API。

row().child.isShown() #

检测子行是否显示。

请参考原官方地址的 row().child.isShown() API。

row().child.remove() #

移除子行。

请参考原官方地址的 row().child.remove() API。

row().child() #

获取子行或者设置子行。

请参考原官方地址的 row().child() API。

row().child().show() #

显示选定的子行。

请参考原官方地址的 row().child().show() API。

row().child().hide() #

隐藏选定的子行然后创建一个新的子行。

请参考原官方地址的 row().child().hide() API。

row().child().remove() #

删除选定子行。

请参考原官方地址的 row().child().remove() API。

row().data() #

获取行数据或者设置行数据。

请参考原官方地址的 row().data() API。

row().index() #

获取行的索引。

请参考原官方地址的 row().index() API。

row().invalidate() #

使 DataTables 持有的选定行的数据无效化。

请参考原官方地址的 row().invalidate() API。

row().node() #

获得 tr 节点。

请参考原官方地址的 row().node() API。

row().remove() #

删除选定行。

请参考原官方地址的 row().remove() API。

rows() #

选定多行。

请参考原官方地址的 rows() API。

rows.add() #

添加多行。

请参考原官方地址的 rows.add() API。

rows().cache() #

获取缓存里的多行。

请参考原官方地址的 rows().cache() API。

rows().data() #

获取多行数据。

请参考原官方地址的 rows().data() API。

rows().indexes() #

获取多行的索引。

请参考原官方地址的 rows().indexes() API。

rows().invalidate() #

使 DataTables 持有的选定多行的数据无效化。

请参考原官方地址的 rows().invalidate() API。

rows().nodes() #

获取多个 tr 节点。

请参考原官方地址的 rows().nodes() API。

rows().remove() #

删除选定的多行。

请参考原官方地址的 rows().remove() API。

表格(Tables) #

table() #

基于选择器获得表格的 API 对象。

请参考原官方地址的 table() API。

table().container() #

得到表格的容器 div ,包括 DataTables 所有的控件。

请参考原官方地址的 table().container() API。

table().header() #

得到表格 thead 节点。

请参考原官方地址的 table().header() API。

table().body() #

得到表格 tbody 节点。

请参考原官方地址的 table().body() API。

table().footer() #

得到表格 tfoot 节点。

请参考原官方地址的 table().footer() API。

table().node() #

得到表格 table 节点。

请参考原官方地址的 table().node() API。

tables() #

得到 table 的 jQuery 对象。

请参考原官方地址的 tables() API。

tables().containers() #

得到表格的容器 div ,包括 DataTables 所有的控件。

请参考原官方地址的 tables().containers() API。

tables().header() #

得到表格 thead 节点。

请参考原官方地址的 tables().header() API。

tables().body() #

得到表格 tbody 节点,如果是一次性初始化多个表格,使用类选择器,或者 table 标签选择初始化,使用下列方法,table() 针对单个table,tables() 针对多个 table。

请参考原官方地址的 tables().body() API。

tables().footer() #

得到表格 tfoot 节点。

请参考原官方地址的 tables().footer() API。

tables().nodes() #

得到表格 table 节点。

请参考原官方地址的 tables().nodes() API。

实用(Utility) #

any() #

确定结果集里是否有符合条件的记录(判断表格里有没有数据)。

请参考中文网地址的 any() API。

concat() #

Combine multiple API instances to create a single new instance.

请参考原官方地址的 concat() API。

each() #

遍历结果集。

请参考原官方地址的 each() API。

eq() #

Reduce an Api instance to a single context and result set.

请参考原官方地址的 eq() API。

filter() #

从结果集中过滤。

请参考原官方地址的 filter() API。

flatten() #

把一列或者几列数据从二维数组变成一维数组。

请参考原官方地址的 flatten() API。

indexOf() #

从结果集中找匹配的值,返回找到个数。

请参考原官方地址的 indexOf() API。

iterator() #

遍历表格、列,行,单元格结果集。

请参考原官方地址的 iterator() API。

join() #

给结果集数据以字符连接然后返回一个字符串。

请参考原官方地址的 join() API。

lastIndexOf() #

返回与字符相匹配第一次出现的位置(从后往前)。

请参考原官方地址的 lastIndexOf() API。

length #

返回结果集的长度。

请参考原官方地址的 length API。

map() #

通过回调函数,创建一个新的结果集。

请参考原官方地址的 map() API。

pluck() #

返回指定属性结果集。

请参考原官方地址的 pluck() API。

pop() #

从结果集中移除最后一个项目。

请参考原官方地址的 pop() API。

push() #

添加一个多个项目到结果集。

请参考原官方地址的 push() API。

reduce() #

遍历结果集,通过回调函数返回从左到右的数据。

请参考原官方地址的 reduce() API。

reduceRight() #

遍历结果集,通过回调函数返回从右到左的数据。

请参考原官方地址的 reduceRight() API。

reverse() #

反转结果集。

请参考原官方地址的 reverse() API。

shift() #

移除并返回结果集中的第一个。

请参考原官方地址的 shift() API。

sort() #

对结果集进行排序。

请参考原官方地址的 sort() API。

splice() #

对结果集进行分割。

请参考原官方地址的 splice() API。

to$() #

转为 jQuery 实例。

请参考原官方地址的 to$() API。

toArray() #

把结果集转换为 JavaScript 数组。

请参考原官方地址的 toArray() API。

toJQuery() #

转为 jQuery 实例。

请参考原官方地址的 toJQuery() API。

unique() #

去重。

请参考原官方地址的 unique() API。

unshift() #

在结果集里从头添加一个或多个项目,返回长度。

请参考原官方地址的 unshift() API。

静态方法 #

$.fn.dataTable.isDataTable() #

检查一个 table 节点是不是 DataTables 实例。

请参考中文网地址的 $.fn.dataTable.isDataTable() API。

$.fn.dataTable.tables() #

获取该页面上所有的 DataTables 实例。

请参考中文网地址的 $.fn.dataTable.tables() API。

$.fn.dataTable.util.escapeRegex() #

使用正则表达式转义特殊字符。

请参考中文网地址的 $.fn.dataTable.util.escapeRegex() API。

$.fn.dataTable.util.throttle() #

减少方法调用的频率。

请参考中文网地址的 $.fn.dataTable.util.throttle() API。

$.fn.dataTable.versionCheck() #

版本号兼容性检查。

请参考中文网地址的 $.fn.dataTable.versionCheck() API。

$.fn.dataTable.defaults #

在实际项目中,可能需要用到多个表格,需要使用 dom 选项把所有的表格设置为相同的布局,这时你可以使用 $.fn.dataTable.defaults 对象处理。

例子:

禁用 DataTables 中默认的搜索和排序功能,但当表初始化时启用排序

// 默认禁用搜索和排序
$.extend($.fn.dataTable.defaults, {
    searching: false,
    ordering:  false
});

// 这样初始化,排序将会打开
// 搜索功能仍然是关闭
$('#example').DataTable({
    ordering: true
});

事件 #

DataTables 提供了一些内置的事件,可以通过 table 的 jQuery 对象的 .on().off() 等方法绑定、解绑事件监听。

例如:

$('#table-example').on('draw.dt', function () {
    alert('Table redraw');
});
$(document).on('init.dt', function (e, settings) {
    var api = new $.fn.dataTable.Api(settings);
    console.log('New DataTable created:', api.table().node());
});

扩展插件 #

自动填充(AutoFill) #

自动填充添加了类似Excel那样,通过拖拽覆盖到的单元格被填充或者自增的功能。

请参考原官方地址的 autoFill 扩展。

列排列(ColReorder) #

ColReorder 允许用户通过下拉或者拖拽列头修改列的排列顺序。

请参考原官方地址的 colReorder 扩展。

列隐藏显示(ColVis) #

ColVis 允许用户操作列的隐藏和显示。

请参考原官方地址的 ColVis 扩展。

列固定(FixedColumns) #

FixedColumns 提供列冻结的功能,比如用户始终能看到索引列,而右边的表格通过滚动条横向拖动。

请参考原官方地址的 FixedColumns 扩展。

表头固定(FixedHeader) #

FixedHeader 提供冻结 header,footer 和大多数左边或者右边的列,确保标题信息永远都是可见的。

请参考原官方地址的 FixedHeader 扩展。

KeyTable #

KeyTable 提供类似 Excel 单元格导航。事件(获得焦点 focus,失去焦点 blur,动作 action 等等)可以分配指定到 单元格、列、行或者所有的单元格中。

请参考原官方地址的 KeyTable 扩展。

自适应(Responsive) #

Responsive 将提供自动适应屏幕的功能,让你的表格在不同的设备上都能够显示。

请参考原官方地址的 Responsive 扩展。

滚动渲染器(Scroller) #

scroller 是一个虚拟的渲染器。允许表格看起来是有滚动条在拖动整个数据,实际上只有显示的部分的数据被拖出来,可以更快的操作。

请参考原官方地址的 Scroller 扩展。

表格工具按钮(TableTools) #

TableTools 功能提供 打印,保存文件,复制到剪贴板。还有行的选择能力。

请参考原官方地址的 TableTools 扩展。

表单增强 jq/form #

ID: jq/form

组件支持使用ajax提交表单。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入表单增强插件依赖。

define(['jq/form'], function() {
    // Now you can use Form plugin via .ajaxSubmit() etc. methods.
});

当然,也可以直接引入使用。

require(['jq/form'], function() {
    // Now you can also use Form plugin via .ajaxSubmit() etc. methods.
});

用法 #

对一个form元素的jQuery对象调用 .ajaxForm(options).ajaxSubmit(options)等方法。

// prepare all forms for ajax submission
$('form').ajaxForm({
    target: '#myResultsDiv'
})

// bind submit handler to form
$('form').on('submit', function(e) {
    e.preventDefault(); // prevent native submit
    $(this).ajaxSubmit({
        target: 'myResultsDiv'
    })
});

配置项 #

所有标准的ajax配置项都可以使用。

beforeSerialize #

Function

默认值:null

在表单序列化之前调用,返回false将终止表单的提交。该回调函数有两个参数:表单的jQuery对象和表单的options对象。

beforeSubmit #

Function

默认值:null

在表单提交前调用,返回false将终止表单的提交。改回调函数有三个参数:表单的数据(array)、表单的jQuery对象和表单的options对象。

filtering #

Function

默认值:null

在处理字段前调用。这提供了一种过滤元素的方法。

clearForm #

Boolean

默认值:null

提交成功是否清除表单。

dataType #

String

默认值:null

响应的预期数据类型,值的类型有:null,'xml','script'或'json'。

delegation #

Boolean

默认值:null

是否启用事件委派。需jQuery v1.7+

error #

Function

错误时的回调函数。

forceSync #

Boolean

仅适用于使用iframe选项或使用不支持XHR2的浏览器上传文件的情况。设置为true时可以删除在上传文件之时发布表单的短暂延迟。 延迟用于允许浏览器在执行本机表单提交之前呈现DOM更新。 这样可以在向用户显示通知时提高可用性,例如“Please Wait ...”

iframe #

Boolean

默认值:null

表单将服务器的响应始终定位到<iframe>,而不是通过使用xhr。

iframeSrc #

String

默认值:null

<iframe>标签的src的属性值。

iframeTarget #

String

默认值:null

标识要用作文件上传的响应目标的<iframe>元素。指定一个现有的<iframe>元素,否则将创建一个临时<iframe>元素来捕获上传文件时的响应。

method #

String

默认值:POST

用于请求的HTTP方法(例如“POST”,“GET”,“PUT”)。

replaceTarget #

Boolean

默认值:null

与target参数共同起作用。如果target需要被替换,设置为true,如果只有target内容需要被替换,则设置为false。

resetForm #

Boolean

默认值:null

表单提交成功后是否重置表单。

semantic #

Boolean

默认值:null

指示表单元素序列化时是否严格按照表单元素定义顺序。在序列化只有<input type=”image” />元素会放在序列化字符串的最后,若semantic=true,则会按照它的定义顺序进行序列化。

success #

Function

表单提交成功后的回调函数。提供标准的jQuery参数。

target #

String | jQuery | DOM

默认值:null

使用服务器的响应结果更新的页面元素。

type #

String

默认值:POST

用于请求的HTTP方法(例如“POST”,“GET”,“PUT”)。method的别名,如果两者都存在则会被method的值覆盖。

url #

String

默认值:null

提交表单的url地址。

方法 #

jqXHR #

jqXHR对象是在每个ajaxSubmit执行之后缓存在data-cache元素中的数据。它可以这样访问:

var form = $('#myForm').ajaxSubmit({ /* options */ });
var xhr = form.data('jqxhr');

xhr.done(function() {
...
});

ajaxForm #

参数:options(object)

准备好一个可以在所有必要的监听事件中使用ajax提交的表单,然后不提交表单。使用ajaxForm提交已经已经存在的表单,也可以使用delegation配置项处理尚未添加到DOM中的表单。

当想用插件管理所有的绑定事件时使用ajaxForm:

// prepare all forms for ajax submission
$('form').ajaxForm({
    target: '#myResultsDiv'
});

ajaxSubmit #

参数:options(object)

通过ajax即时的提交表单。在最常见的用例中,这是为了响应用户单击表单上的提交按钮而被调用的。 如果要绑定自己的提交处理程序,可以使用ajaxSubmit。

// bind submit handler to form
$('form').on('submit', function(e) {
    e.preventDefault(); // prevent native submit
    $(this).ajaxSubmit({
        target: 'myResultsDiv'
    })
});

formSerialize #

将表单序列化成一个字符串,返回的结果为字符串:name1=value1&name2=value2。示例:

var queryString = $('#myFormId').formSerialize();
});

fieldSerialize #

将表单的一部分序列化成一个字符串,返回的结果为字符串:name1=value1&name2=value2。示例:

var queryString = $('#myFormId .specialFields').fieldSerialize();
});

fieldValue #

返回元素的值,以数组形式返回。

resetForm #

将表单重置为原始状态。

clearForm #

清除表单元素。 此方法清除所有文本输入,密码输入和文本区域元素,清除任何选择元素中的选择,并取消选中单选框和复选框的所有输入。 它不清除隐藏的字段值。

clearFields #

清除所选的字段元素。

表单验证 jq/form/validator #

ID: jq/form/validator

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入警告框插件依赖。

define(['jq/form/validator'], function() {
    // Now you can use Alert plugin via .validate() method.
});

当然,也可以直接引入使用。

require(['jq/form/validator'], function() {
    // Now you can also use Alert plugin via .validate() method.
});

示例 #

示例效果可以前往 表单验证插件示例 页面查看。

配置项 #

debug #

Boolean

默认值:false

如果这个参数为true,那么表单不会提交,只进行检查,调试时十分方便。

submitHandler #

Function

表单通过校验的回调函数,替换默认的表单提交函数。示例:

$("#myform").validate({
  submitHandler: function(form) {
    $(form).ajaxSubmit();
  }
});

invalidHandler #

Function

表单提交无效时的会调函数,参数分别为调用事件、验证器。示例:

$("#myform").validate({
  invalidHandler: function(event, validator) {
    // 'this' refers to the form
    var errors = validator.numberOfInvalids();
    if (errors) {
      var message = errors == 1
        ? 'You missed 1 field. It has been highlighted'
        : 'You missed ' + errors + ' fields. They have been highlighted';
      $("div.error span").html(message);
      $("div.error").show();
    } else {
      $("div.error").hide();
    }
  }
});

ignore #

Selector

默认值::hidden

忽略某些元素不校验。

rules #

Object

以key/value的形式自定义规则,key是元素的名称,value是校验规则。示例:

$("#myform").validate({
  rules: {
    // simple rule, converted to {required:true}
    name: "required",
    // compound rule
    email: {
      required: true,
      email: true
    }
  }
});

默认的校验规则:

规则 描述
required:true 必须输入的字段。
remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值。
email:true 必须输入正确格式的电子邮件。
url:true 必须输入正确格式的网址。
date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎用。
dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。
number:true 必须输入合法的数字(负数,小数)。
digits:true 必须输入整数。
creditcard: 必须输入合法的信用卡号。
equalTo:"#field" 输入值必须和 #field 相同。
accept: 输入拥有合法后缀名的字符串(上传文件的后缀)。
maxlength:5 输入长度最多是 5 的字符串(汉字算一个字符)。
minlength:10 输入长度最小是 10 的字符串(汉字算一个字符)。
rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)。
range:[5,10] 输入值必须介于 5 和 10 之间。
max:5 输入值不能大于 5。
min:10 输入值不能小于 10。

messages #

Object

key/value的形式定义自定义消息。 Key是一个元素的名称,value为要显示该元素的消息。示例:

$("#myform").validate({
  rules: {
    name: {
      required: true,
      minlength: 2
    }
  },
  messages: {
    name: {
      required: "We need your email address to contact you",
      minlength: jQuery.validator.format("At least {0} characters required!")
    }
  }
});

默认的校验规则的提示消息为:

messages: {
    required: "必须填写",
    remote: "请修正此栏位",
    email: "请输入有效的电子邮件",
    url: "请输入有效的网址",
    date: "请输入有效的日期",
    dateISO: "请输入有效的日期 (YYYY-MM-DD)",
    number: "请输入正确的数字",
    digits: "只可输入数字",
    creditcard: "请输入有效的信用卡号码",
    equalTo: "你的输入不相同",
    extension: "请输入有效的后缀",
    maxlength: $.validator.format("最多 {0} 个字"),
    minlength: $.validator.format("最少 {0} 个字"),
    rangelength: $.validator.format("请输入长度为 {0} 至 {1} 之間的字串"),
    range: $.validator.format("请输入 {0} 至 {1} 之间的数值"),
    max: $.validator.format("请输入不大于 {0} 的数值"),
    min: $.validator.format("请输入不小于 {0} 的数值")
}

groups #

Object

对一组元素的验证,用一个错误提示,用 errorPlacement 控制把出错信息放在哪里。示例:

$("#myform").validate({
  groups: {
    username: "fname lname"
  },
  errorPlacement: function(error, element) {
    if (element.attr("name") == "fname" || element.attr("name") == "lname" ) {
      error.insertAfter("#lastname");
    } else {
      error.insertAfter(element);
    }
  }
});

onsubmit #

Boolean

默认值:ture

指定是否提交时验证。

onfocusout #

Boolean | Function

默认值:ture

指定是否在获取焦点时验证。

onkeyup #

Boolean | Function

默认值:ture

指定是否在敲击键盘时验证。

onclick #

Boolean | Function

默认值:ture

指定是否在鼠标点击时验证(一般验证 checkbox、radiobox)。

focusInvalid #

Boolean

默认值:ture

提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点。

focusCleanup #

Boolean

默认值:false

当未通过验证的元素获得焦点时,移除错误提示(避免和 focusInvalid 一起使用)。

errorClass #

String

默认值:error

指定错误提示的 css 类名,可以自定义错误提示的样式。

validClass #

errorElement #

String

默认值:valid

这个class添加到已经通过校验的元素。

String

默认值:label

指定使用什么标签标记错误。

wrapper #

String

默认值:window

指定使用什么标签再把上边的 errorELement 包起来。

errorLabelContainer #

Selector

把错误信息统一放在一个容器里面。

errorContainer #

Selector

使用附加容器发送消息。

showErrors #

Function

自定义消息显示处理程序。 第一个参数为错误的映射,第二参数为错误的数组,

errorPlacement #

Function

可以自定义错误放到哪里。

success #

String | Function

要验证的元素通过验证后的动作,如果是一个字符串,会当作一个 css 类,也可是一个函数。

方法 #

自定义选择器实用工具
名称 返回类型 描述
validate(options) Validator 验证所选的FORM。
valid() Boolean 检查是否验证通过。
rules() Options 返回元素的验证规则。
rules("add",rules) Options 增加验证规则。
rules("remove",rules) Options 删除验证规则。
removeAttrs(attributes) Options 删除特殊属性并且返回它们。
:blank Validator 没有值的筛选器。
:filled Array 有值的筛选器。
:unchecked Array 没选择的元素的筛选器。
jQuery.format(template,argument,argumentN...) String 用参数代替模板中的 {n}。

Validator #

validate 方法返回一个 Validator 对象。Validator 对象有很多方法可以用来引发校验程序或者改变 form 的内容,下面列出几个常用的方法。

Validator 函数
名称 返回类型 描述
form() Boolean 验证 form 返回成功还是失败。
element(element) Boolean 验证单个元素是成功还是失败。
resetForm() undefined 把前面验证的 FORM 恢复到验证前原来的状态。
showErrors(errors) undefined 显示特定的错误信息。
setDefaults(defaults) undefined 改变默认的设置。
addMethod(name,method,message) undefined 添加一个新的验证方法。必须包括一个独一无二的名字,一个 JAVASCRIPT 的方法和一个默认的信息。
addClassRules(name,rules) undefined 增加组合验证类型,在一个类里面用多种验证方法时比较有用。
addClassRules(rules) undefined 增加组合验证类型,在一个类里面用多种验证方法时比较有用。这个是同时加多个验证方法。

内置验证方式 #

名称 返回类型 描述
required() Boolean 必填验证元素。
required(dependency-expression) Boolean 必填元素依赖于表达式的结果。
required(dependency-callback) Boolean 必填元素依赖于回调函数的结果。
remote(url) Boolean 请求远程校验。url 通常是一个远程调用方法。
minlength(length) Boolean 设置最小长度。
maxlength(length) Boolean 设置最大长度。
rangelength(range) Boolean 设置一个长度范围 [min,max]。
min(value) Boolean 设置最小值。
max(value) Boolean 设置最大值。
email() Boolean 验证电子邮箱格式。
range(range) Boolean 设置值的范围
url() Boolean 验证 URL 格式
date() Boolean 验证日期格式(类似 30/30/2008 的格式,不验证日期准确性只验证格式)。
dateISO() Boolean 验证 ISO 类型的日期格式。
dateDE() Boolean 验证德式的日期格式(29.04.1994 或 1.1.2006)。
number() Boolean 验证十进制数字(包括小数的)。
digits() Boolean 验证整数。
creditcard() Boolean 验证信用卡号。
accept(extension) Boolean 验证相同后缀名的字符串。
equalTo(other) Boolean 验证两个输入框的内容是否相同。
phoneUS() Boolean 验证美式的电话号码。

拖拽插件 jq/dragsort #

ID: jq/dragsort

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入警告框插件依赖。

define(['jq/dragsort'], function() {
    // Now you can use Alert plugin via .dragsort() method.
});

当然,也可以直接引入使用。

require(['jq/dragsort'], function() {
    // Now you can also use Alert plugin via .dragsort() method.
});

示例 #

示例效果可以前往 拖拽插件示例 页面查看。

用法 #

$("ul").dragsort({
    dragSelector: "li",
    dragEnd: function() { },
    dragBetween: false,
    placeHolderTemplate: "<li></li>"
});

配置项 #

dragSelector #

Selector

默认值 li

CSS选择器内的元素的列表项的拖动手柄。

dragSelectorExclude #

Selector

默认值 input, textarea

CSS选择器的元素内的dragSelector不会触发dragsort的。

dragEnd #

Function

拖动结束后将被调用的回调函数。

dragBetween #

Boolean

默认值 false

设置为“true”,如果你要启用多组列表之间拖动选定的列表。

placeHolderTemplate #

String

默认值 <li></li>

拖动列表的HTML部分。

scrollContainer #

Selector

默认值 window

CSS选择器的元素,作为滚动容器,例如溢出的div设置为自动。

scrollSpeed #

Number

默认值 5

一个数字,它代表了速度,页面拖动某一项时,将滚动容器外,较高使用价值的是速度和较低的值是较慢的。 如果设置为”0″以禁用滚动。

定制滚动条 jq/mCustomScrollbar #

ID: jq/mCustomScrollbar

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入警告框插件依赖。

define(['jq/mCustomScrollbar'], function() {
    // Now you can use Alert plugin via .mCustomScrollbar() method.
});

当然,也可以直接引入使用。

require(['jq/mCustomScrollbar'], function() {
    // Now you can also use Alert plugin via .mCustomScrollbar() method.
});

用法 #

$(".content").mCustomScrollbar({
    axis:"x",
    ...
});
});

配置项 #

配置的配置项在$(selector).mCustomScrollbar({ option: value });中使用。

setWidth #

Boolean | Number | String

默认值 false

设置内容的宽度,会覆盖CSS中的宽度。两种形式:整数(像素值)和字符串(百分比)。

setHeight #

Boolean | Number | String

默认值 false

设置内容的高度,会覆盖CSS中的高度。两种形式:整数(像素值)和字符串(百分比)。

setTop #

String

默认值 0

设置内容的初始top属性。例如:-100px10%

setLeft #

String

默认值 0

设置内容的初始left属性。例如:-100px10%

axis #

String

默认值 y

定义内容的滚动轴(垂直 和/或 水平)。有效的值有xyyx

scrollbarPosition #

String

默认值 inside

设置滚动条相对于内容的位置。有效的值有:inside设置滚动条在元素里面,outside设置滚动条在元素外面。注意:设置成outside需要元素或者父级元素包含css属性position: relative,否则滚动条将会相对于文档的根元素进行定位。

scrollInertia #

integer

默认值 950

设置滚动条的滚动动画的持续时间,设置为0则表示禁用滚动动画的效果。

autoDraggerLength #

Boolean

默认值 true

启用或禁用滚动条自动调整拖动长度。设置为false则会固定滚动条测长度。

autoHideScrollbar #

Boolean

默认值 null

启用或禁用在不活动时自动隐藏滚动条。注意:一些特殊的主题如minimal会覆盖此选项。

autoExpandScrollbar #

Boolean

默认值 null

当光标移动或拖动滚动条时,启用或禁用自动展开滚动条。

alwaysShowScrollbar #

Integer

默认值 0

始终保持滚动条可见。0——禁用,1——保持滚动轨道可见,2——保持所有的滚动组件可见。

snapAmount #

Integer | Array

默认值 null

滚动的固定像素倍数,在滚动表格数据、幻灯片、图像缩略图时使用。如果需要分别设置水平和垂直方向的值时,设置为数组形式[y, x]

snapOffset #

Integer

默认值 0

snapAmount选项设置偏移量。

mouseWheel #

enable #

Boolean

默认值 true

启用或禁用内容通过鼠标滚轮滚动。

scrollAmount #

Integer

默认值 auto

设置鼠标滚轮滚动量(以像素为单位)。

axis #

String

默认值 y

定义鼠标滚轮滚动轴在垂直和水平滚动条的存在。

preventDefault #

Boolean

默认值 null

阻止在结束或开始滚动时自动滚动父元素的默认行为。

normalizeDelta #

Boolean

默认值 null

启用或禁用鼠标轮(三角洲)加速。

invert #

Boolean

默认值 null

鼠标滚轮滚动方向反转。

scrollButtons #

enable #

Boolean

默认值 null

启用或禁用滚动条按钮。

scrollAmount #

Integer

默认值 auto

设置按钮滚动量(以像素为单位)。

scrollType #

String

默认值 stepless

定义按钮滚动类型/行为。stepless——按下按钮后,连续滚动内容,stepped——每次单击按钮只滚动固定的长度。

tabindex #

Integer

默认值 null

设置按钮的TabIndex值。

keyboard #

enable #

Boolean

默认值 true

启用或禁用通过键盘滚动内容。该插件支持方向的箭头(前,左,右,下),上一页(PgUp),下一页(PgDn),home和end键。

scrollAmount #

Integer

默认值 auto

设置键盘箭头滚动量(以像素为单位)。

scrollType #

String

默认值 stepless

定义键盘箭头滚动类型/行为。stepless——按下键盘后,连续滚动内容,stepped——每次单击按键只滚动固定的长度。

contentTouchScroll #

Integer | Boolean

默认值 25

启用或禁用内容通过触摸滚动。false为禁用。数值为定义的滚动量。

documentTouchScroll #

Boolean

默认值 true

启用或禁用文档过触摸滚动。

advanced #

autoScrollOnFocus #

String | Boolean

默认值 input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']

设置滚动自动聚焦的元素列表。为false时禁用此功能。

updateOnContentResize #

Boolean

默认值 true

在内容,元素或视口上自动更新滚动条大小。

updateOnImageLoad #

Boolean

默认值 auto

当元素中的图像完全加载时,自动更新滚动条。默认值为auto,仅在“x”和“yx”轴(如果需要)上触发该功能。 当内容包含图像并且需要在任何轴上触发的功能时,值应为true。

updateOnSelectorChange #

String | Boolean

默认值 null

当特定选择器的数量和大小更改时,自动更新滚动条。设置为ture时,每次更改任何元素时,都会更新滚动条。设置为false时,禁用此功能。

autoUpdateTimeout #

Integer

默认值 60

设置自动更新超时时间(以毫秒为单位)。

theme #

String

默认值 light

设置滚动条主题。

callbacks #

回调函数。

onCreate #

Function

创建插件标记时调用的函数。

onInit #

Function

滚动条已经初始化时调用的函数。

onScrollStart #

Function

滚动条开始滚动时调用的函数。

onScroll #

Function

滚动条滚动结束时调用的函数。

whileScrolling #

Function

滚动条处于滚动状态时调用的函数。

onTotalScroll #

Function

当滚动完成并将内容一直滚动到最后(下/右)时调用的函数。

onTotalScrollBack #

Function

当滚动完成并将内容一直滚动到最后(上/左)时调用的函数。

onTotalScrollOffset #

Integer

默认值 0

设置onTotalScroll选项的偏移量。例如,设置onTotalScrollOffset:100将在达到滚动开始之前触发onTotalScroll回调100个像素。

onTotalScrollBackOffset #

Integer

默认值 0

设置onTotalScrollBack选项的偏移量。例如,设置onTotalScrollBackOffset:100将在达到滚动开始之前触发onTotalScrollBack回调100个像素。

alwaysTriggerOffsets #

Boolean

默认值 true

设置调用onTotalScrollonTotalScrollBack偏移量的行为。为true时,一直调用。为false时,只在特定的情况调用,例如每次滚动的开始与结束。

onOverflowY #

Function

当内容变得足够长并且添加垂直滚动条时调用的函数。

onOverflowX #

Function

当内容变得足够宽并且添加水平滚动条时调用的函数。

onOverflowYNone #

Function

当内容变得足够短且垂直滚动条被删除时调用的函数。

onOverflowXNone #

Function

当内容变得足够窄且水平滚动条被删除时调用的函数。

onBeforeUpdate #

Function

在滚动条更新之前调用的函数。

onUpdate #

Function

在滚动条更新之后调用的函数。

onImageLoad #

Function

在元素内的图像被完全加载并且滚动条被更新时调用的函数。

onSelectorChange #

Function

每次添加、删除元素或更改元素大小和滚动条更新时调用的函数。

live #

String | Boolean

liveSelector #

String

默认值 null

为元素预设滚动条。

方法 #

update #

调用update方法来手动更新现有的滚动条,以适应新内容或调整大小的元素。

$(selector).mCustomScrollbar("update");

scrollTo #

调用scrollTo方法使滚动条滚动一定的位置。

参数:position, options

$(selector).mCustomScrollbar("scrollTo",position,options);

stop #

停止滚动条的滚动。

$(selector).mCustomScrollbar("stop");

disable #

禁用滚动条。

$(selector).mCustomScrollbar("disable");

destroy #

销毁滚动条。

$(selector).mCustomScrollbar("destroy");

全屏滚动条 jq/nicescroll #

ID: jq/nicescroll

相对于 jq/mCustomScrollbar 组件来说,jq/nicescroll 不适合渲染滚动区域内的某块元素的滚动条,但很适合渲染全屏类的滚动条,故组件库同时也引入了 jq/nicescroll 组件。

当前版本 v3.6.0。原组件官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 NiceScroll 插件依赖。

define(['jq/nicescroll'], function() {
    // Now you can use Alert plugin via .niceScroll() method.
});

当然,也可以直接引入使用。

require(['jq/nicescroll'], function() {
    // Now you can also use Alert plugin via .niceScroll() method.
});

示例 #

示例效果可以前往 NiceScroll 插件示例 页面查看。

上传组件 jq/webuploader #

ID: jq/webuploader

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入警告框插件依赖。

define(['jq/webuploader'], function(WebUploader) {
    // Now you can use Alert plugin via WebUploader.create() method.
});

当然,也可以直接引入使用。

require(['jq/webuploader'], function(WebUploader) {
    // Now you can also use Alert plugin via WebUploader.create() method.
});

用法 #

Html部分 #

首先准备dom结构,包含存放文件信息的容器、选择按钮和上传按钮三个部分。

<div id="uploader" class="wu-example">
    <!--用来存放文件信息-->
    <div id="thelist" class="uploader-list"></div>
    <div class="btns">
        <div id="picker">选择文件</div>
        <button id="ctlBtn" class="btn btn-default">开始上传</button>
    </div>
</div>

初始化WebUploader #

var uploader = WebUploader.create({

    // swf文件路径
    swf: BASE_URL + '/js/Uploader.swf',

    // 文件接收服务端。
    server: 'http://webuploader.duapp.com/server/fileupload.php',

    // 选择文件的按钮。可选。
    // 内部根据当前运行是创建,可能是input元素,也可能是flash.
    pick: '#picker',

    // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
    resize: false
});

配置项 #

上传入口类Uploader的参数配置。

dnd #

Selector

默认值:null

指定DragAndDrop拖拽的容器,如果不指定,则不启动。

disableGlobalDnd #

Selector

默认值:null

指定监听paste事件的容器,如果不指定,不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为document.body

pick #

Selector | Object

默认值:null

指定选择文件的按钮容器,不指定则不创建按钮。

id #

Selector | DOM

指定选择文件的按钮容器,不指定则不创建按钮。注意 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。

label #

String

请采用innerHTML代替。

innerHTML #

String

指定按钮文字。不指定时优先从指定的容器中看是否自带文字。

multiple #

Boolean

是否开起同时选择多个文件能力。

accept #

Array

默认值:null

指定接受哪些类型的文件。 由于目前还有ext转mimeType表,所以这里需要分开指定。

title #

String

文字描述。

extensions #

String

允许的文件后缀,不带点,多个用逗号分割。

mimeTypes #

String

多个用逗号分割。

示例 #
{
    title: "Images",
    extensions: "gif,jpg,jpeg,bmp,png",
    mimeTypes: "image/*"
}

thumb #

Object

默认值:

{
    width: 110,
    height: 110,

    // 图片质量,只有type为`image/jpeg`的时候才有效。
    quality: 70,

    // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
    allowMagnify: true,

    // 是否允许裁剪。
    crop: true,

    // 为空的话则保留原有图片格式。
    // 否则强制转换成指定的类型。
    type: 'image/jpeg'
}

auto #

Boolean

默认值:false

设置为 true 后,不需要手动调用上传,有文件选择即开始上传。

配置生成缩略图的选项。

compress #

Object

默认值:

{
    width: 1600,
    height: 1600,

    // 图片质量,只有type为`image/jpeg`的时候才有效。
    quality: 90,

    // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
    allowMagnify: false,

    // 是否允许裁剪。
    crop: false,

    // 是否保留头部meta信息。
    preserveHeaders: true,

    // 如果发现压缩后文件大小比原来还大,则使用原来图片
    // 此属性可能会影响图片自动纠正功能
    noCompressIfLarger: false,

    // 单位字节,如果图片大小小于此值,不会采用压缩。
    compressSize: 0
}

runtimeOrder #

Object

默认值:html5,flash

指定运行时启动顺序。默认会想尝试 html5 是否支持,如果支持则使用 html5, 否则则使用 flash。可以将此值设置成 flash,来强制使用 flash 运行时。

prepareNextFile #

Boolean

默认值:false

是否允许在文件传输时提前把下一个文件准备好。 对于一个文件的准备工作比较耗时,比如图片压缩,md5序列化。 如果能提前在当前文件传输期处理,可以节省总体耗时。

chunked #

Boolean

默认值:false

是否要分片处理大文件上传。

chunkSize #

Integer

默认值:5242880

如果要分片,分多大一片? 默认大小为5M。

chunkRetry #

Boolean | Integer

默认值:2

如果某个分片由于网络问题出错,允许自动重传多少次。

threads #

Integer

默认值:3

上传并发数。允许同时最大上传进程数。

formData #

Object

默认值:{}

件上传请求的参数表,每次发送都会发送此对象中的参数。

fileVal #

String

默认值:file

设置文件上传域的name。

method #

String

默认值:POST

文件上传方式,POST或者GET。

sendAsBinary #

Boolean

默认值:false

是否以二进制的流的方式发送文件。

fileNumLimit #

Integer

默认值:null

验证文件总数量, 超出则不允许加入队列。

fileSizeLimit #

Integer

默认值:null

验证文件总大小是否超出限制, 超出则不允许加入队列。

fileSingleSizeLimit #

Integer

默认值:null

验证单个文件大小是否超出限制, 超出则不允许加入队列。

duplicate #

Boolean

默认值:null

去重,根据文件名字、文件大小和最后修改时间来生成hash Key。

disableWidgets #

String | Array

默认值:null

默认所有 Uploader.register 了的 widget 都会被加载,如果禁用某一部分,请通过此 option 指定黑名单。

事件 #

事件名 参数说明 描述
dndAccept
  • items
阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API,且只能通过 mime-type 验证。
beforeFileQueued
  • file {File}File对象
当文件被加入队列之前触发,此事件的handler返回值为false,则此文件不会被添加进入队列。
fileQueued
  • file {File}File对象
当文件被加入队列以后触发。
filesQueued
  • files {File}数组,内容为原始File(lib/File)对象。
当一批文件添加进队列以后触发。
fileDequeued
  • file {File}File对象
当文件被移除队列后触发
reset 当 uploader 被重置的时候触发。
startUpload 当开始上传流程时触发。
stopUpload 当开始上传流程暂停时触发。
uploadFinished 当所有文件上传结束时触发。
uploadStart
  • file {File}File对象
某个文件开始上传前触发,一个文件只会触发一次。
uploadBeforeSend
  • object {Object}
  • data {Object}默认的上传参数,可以扩展此对象来控制上传参数。
  • headers {Object}可以扩展此对象来控制上传头部。
当某个文件的分块在发送前触发,主要用来询问是否要添加附带参数,大文件在开起分片上传的前提下此事件可能会触发多次。
uploadAccept
  • object {Object}
  • ret {Object}服务端的返回数据,json格式,如果服务端不是json格式,从ret._raw中取数据,自行解析。
当某个文件上传到服务端响应后,会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为false, 则此文件将派送server类型的uploadError事件。
uploadProgress
  • file {File}File对象
  • percentage {Number}上传进度
上传过程中触发,携带上传进度。
uploadError
  • file {File}File对象
  • reason {String}出错的code
当文件上传出错时触发。
uploadSuccess
  • file {File}File对象
  • response {Object}服务端返回的数据
当文件上传成功时触发。
uploadComplete
  • file {File} [可选]File对象
不管成功或者失败,文件上传完成时触发。
error
  • type {String}错误类型。
当validate不通过时,会以派送错误事件的形式通知调用者。通过upload.on('error', handler)可以捕获到此类错误,目前有以下错误会在特定的情况下派送错来。
  • Q_EXCEED_NUM_LIMIT 在设置了fileNumLimit且尝试给uploader添加的文件数量超出这个值时派送。
  • Q_EXCEED_SIZE_LIMIT 在设置了Q_EXCEED_SIZE_LIMIT且尝试给uploader添加的文件总大小超出这个值时派送。
  • Q_TYPE_DENIED 当文件类型不满足时触发。

方法 #

Uploader #

上传入口类。

var uploader = WebUploader.Uploader({
    swf: 'path_of_swf/Uploader.swf',

    // 开起分片上传。
    chunked: true
});

option #

option( key ) ⇒ *

option( key, val ) ⇒ self

获取或者设置Uploader配置项。

// 初始状态图片上传前不会压缩
var uploader = new WebUploader.Uploader({
    compress: null;
});

// 修改后图片上传前,尝试将图片压缩到1600 * 1600
uploader.option( 'compress', {
    width: 1600,
    height: 1600
});

getStats #

getStats() ⇒ Object

获取文件统计信息。返回一个包含一下信息的对象。

destroy #

destroy() ⇒ undefined

销毁 webuploader 实例。

addButton #

addButton( pick ) ⇒ Promise

添加文件选择按钮,如果一个按钮不够,需要调用此方法来添加。参数跟options.pick一致。

uploader.addButton({
    id: '#btnContainer',
    innerHTML: '选择文件'
});

makeThumb #

makeThumb( file, callback ) ⇒ undefined

makeThumb( file, callback, width, height ) ⇒ undefined

生成缩略图,此过程为异步,所以需要传入callback。 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。

当 width 或者 height 的值介于 0 - 1 时,被当成百分比使用。

callback中可以接收到两个参数。

注意 Date URL在IE6/7中不支持,所以不用调用此方法了,直接显示一张暂不支持预览图片好了。 也可以借助服务端,将 base64 数据传给服务端,生成一个临时文件供预览。

uploader.on( 'fileQueued', function( file ) {
    var $li = ...;

    uploader.makeThumb( file, function( error, ret ) {
        if ( error ) {
            $li.text('预览错误');
        } else {
            $li.append('&lt;img alt="" src="' + ret + '" />');
        }
    });

});

md5File #

md5File( file[, start[, end]] ) ⇒ promise

计算文件 md5 值,返回一个 promise 对象,可以监听 progress 进度。

uploader.on( 'fileQueued', function( file ) {
    var $li = ...;

    uploader.md5File( file )

        // 及时显示进度
        .progress(function(percentage) {
            console.log('Percentage:', percentage);
        })

        // 完成
        .then(function(val) {
            console.log('md5 result:', val);
        });

});

addFiles #

addFiles( file ) ⇒ undefined

addFiles( [file1, file2 ...] ) ⇒ undefined

参数: files {Array of File or File} [可选]Files 对象 数组

添加文件到队列。

removeFile #

removeFile( file ) ⇒ undefined

removeFile( id ) ⇒ undefined

removeFile( file, true ) ⇒ undefined

removeFile( id, true ) ⇒ undefined

参数: file {File, id}File对象或这File对象的id

移除某一文件, 默认只会标记文件状态为已取消,如果第二个参数为 true 则会从 queue 中移除。

$li.on('click', '.remove-this', function() {
    uploader.removeFile( file );
});

getFiles #

getFiles() ⇒ Array

getFiles( status1, status2, status... ) ⇒ Array

返回指定状态的文件集合,不传参数将返回所有状态的文件。

console.log( uploader.getFiles() );    // => all files
console.log( uploader.getFiles('error') )    // => all error files.

retry #

retry() ⇒ undefined

retry( file ) ⇒ undefined

重试上传,重试指定文件,或者从出错的文件开始重新上传。

sort #

sort( fn ) ⇒ undefined

排序队列中的文件,在上传之前调整可以控制上传顺序。

reset #

reset() ⇒ undefined

重置uploader。目前只重置了队列。

predictRuntimeType #

predictRuntimeType() ⇒ String

预测Uploader将采用哪个Runtime。

upload #

upload() ⇒ undefined

upload( file | fileId) ⇒ undefined

开始上传。此方法可以从初始状态调用开始上传流程,也可以从暂停状态调用,继续上传流程。

可以指定开始某一个文件。

stop #

stop() ⇒ undefined

stop( true ) ⇒ undefined

stop( file ) ⇒ undefined

暂停上传。第一个参数为是否中断上传当前正在上传的文件。

如果第一个参数是文件,则只暂停指定文件。

cancelFile #

cancelFile( file ) ⇒ undefined

cancelFile( id ) ⇒ undefined

参数: file {File, id} File对象或这File对象的id

标记文件状态为已取消, 同时将中断文件传输。

isInProgress #

isInProgress() ⇒ Boolean

判断Uplaoder是否正在上传中。

skipFile( file ) ⇒ undefined

跳过一个文件上传,直接标记指定文件为已上传状态。

request #

request( command, args ) ⇒ * | Promise

request( command, args, callback ) ⇒ Promise

发送命令。当传入callback或者handler中返回promise时。返回一个当所有handler中的promise都完成后完成的新promise

Uploader.register #

Uploader.register(proto);

Uploader.register(map, proto);

参数:

添加组件

Uploader.register({
    'make-thumb': 'makeThumb'
}, {
    init: function( options ) {},
    makeThumb: function() {}
});

Uploader.register({
    'make-thumb': function() {

    }
});

Uploader.unRegister #

Uploader.unRegister(name);

参数: name {string}组件名字

删除插件,只有在注册时指定了名字的才能被删除。

Uploader.register({
    name: 'custom',

    'make-thumb': function() {

    }
});

Uploader.unRegister('custom');

复制兼容插件 jq/zeroclipboard #

ID: jq/zeroclipboard

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入复制兼容插件依赖。

define(['jq/zeroclipboard'], function() {

});

当然,也可以直接引入使用。

require(['jq/zeroclipboard'], function() {

});

用法 #

使用 jQuery 的 Special Events API 和 ZeroClipboard 的 Core 模块给生成剪贴板注入的自定义DOM类绑定beforecopycopyaftercopycopy-error事件。

当用户点击绑定的元素时,触发beforecopycopy事件。

尝试剪贴板注入后,aftercopy事件触发,无论注入是否成功。

如果发生任何 ZeroClipboard 的错误事件,copy-error事件将触发。

例子:

$("body").on("copy", ".zclip", function(/* ClipboardEvent */ e) {
    e.clipboardData.clearData();
    e.clipboardData.setData("text/plain", $(this).data("zclip-text"));
    e.preventDefault();
});

配置项 #

requirePreventDefault #

Boolean

默认值 true

是否阻止默认事件。

autoConvertHtmlToRtf #

Boolean

默认值 true

如果将HTML添加到待处理数据中,则此插件可以自动将HTML转换为RTF(RichText),以便在非HTML编辑器中使用。

hoverClass #

String

默认值 hover

用于模拟:hover伪类的CSS类名称。

activeClass #

String

默认值 active

用于模拟:active伪类的CSS类名称。

树组件 jq/ztree #

ID: jq/ztree

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入树组件的依赖。

define(['jq/ztree'], function() {
    // Now you can use Alert plugin via $.fn.zTree.init() method.
});

当然,也可以直接引入使用。

require(['jq/ztree'], function() {
    // Now you can also use Alert plugin via $.fn.zTree.init() method.
});

示例 #

示例效果可以前往 树组件示例 页面查看。

用法 #

需要使用 $.fn.zTree.init() 方法初始化树组件。如:

$.fn.zTree.init($("#tree"), setting, zTreeNodes);

第一个参数为初始化树组件内容的容器元素(jQuery 对象);第二个参数为配置项对象;第三个参数为树节点数组。

配置项 #

treeId #

String

zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。

注意:请勿进行初始化 或 修改,属于内部参数。

treeObj #

Object

zTree 容器的 jQuery 对象,主要功能:便于操作。

注意:请勿进行初始化 或 修改,属于内部参数。

async #

async.autoParam #

Array

默认值:[]

异步加载时需要自动提交父节点属性的参数。[setting.async.enable = true 时生效]。

将需要作为参数提交的属性名称,制作成 Array 即可,例如:["id", "name"]

可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"]

async.contentType #

String

默认值:application/x-www-form-urlencoded

Ajax 提交参数的数据类型。[setting.async.enable = true 时生效]

contentType = "application/x-www-form-urlencoded" 可以满足绝大部分请求,按照标准的 Form 格式提交参数

contentType = "application/json" 可以满足 .Net 的编程需要,按照 JSON 格式提交参数

async.dataFilter #

Function

默认值: null

参数说明

async.dataType #

String

默认值:text

Ajax 获取的数据类型。[setting.async.enable = true 时生效]

dataType = "text" 可以满足绝大部分请求,其余 dataType 类型请参考 jQuery ajax 中的 dataType 参数

如果设置为 true,请务必设置 setting.async 内的其它参数。如果需要根节点也异步加载,初始化时 treeNodes 参数设置为 null 即可。

async.otherParam #

Array | JSON

默认值:[]

Ajax 请求提交的静态参数键值对。[setting.async.enable = true 时生效]

可以为空[],如果有 key,则必须存在 value。 例如:[key, value]

async.type #

String

默认值:post

Ajax 的 http 请求模式。[setting.async.enable = true 时生效]

对应于 jQuery ajax 中的 type 参数

async.enable #

Boolean

默认值:false

设置 zTree 是否开启异步加载模式

async.url #

String | Function

默认值:null

Ajax 获取数据的 URL 地址。[setting.async.enable = true 时生效]

callback #

回调函数。

callback.beforeAsync #

Function

默认值:null

用于捕获异步加载之前的事件回调函数,zTree 根据返回值确定是否允许进行异步加载

参数说明:Function(treeId, treeNode)

callback.beforeCheck #

Function

默认值:null

用于捕获 勾选 或 取消勾选 之前的事件回调函数,并且根据返回值确定是否允许 勾选 或 取消勾选

参数说明:Function(treeId, treeNode)

callback.beforeClick #

Function

默认值:null

用于捕获单击节点之前的事件回调函数,并且根据返回值确定是否允许单击操作

参数说明:Function(treeId, treeNode, clickFlag)

clickFlag selectedMulti autoCancelSelected && event.ctrlKey / metaKey isSelected 选中操作
1 true false false 普通选中
1 true false true 普通选中
2 true true false 追加选中
0 true true true 取消选中
1 false false false 普通选中
1 false false true 普通选中
1 false true false 普通选中
0 false true true 取消选中
callback.beforeCollapse #

Function

默认值:null

用于捕获父节点折叠之前的事件回调函数,并且根据返回值确定是否允许折叠操作

参数说明:Function(treeId, treeNode)

beforeDblClick #

Function

默认值:null

用于捕获 zTree 上鼠标双击之前的事件回调函数,并且根据返回值确定触发 onDblClick 事件回调函数

参数说明:Function(treeId, treeNode)

callback.beforeDrag #

Function

默认值:null

用于捕获节点被拖拽之前的事件回调函数,并且根据返回值确定是否允许开启拖拽操作

参数说明:Function(treeId, treeNodes)

callback.beforeDragOpen #

Function

默认值:null

用于捕获拖拽节点移动到折叠状态的父节点后,即将自动展开该父节点之前的事件回调函数,并且根据返回值确定是否允许自动展开操作

参数说明:Function(treeId, treeNode)

callback.beforeDrop #

Function

默认值:null

用于捕获节点拖拽操作结束之前的事件回调函数,并且根据返回值确定是否允许此拖拽操作

注意:如未拖拽到有效位置,则不触发此回调函数,直接将节点恢复原位置

参数说明:Function(treeId, treeNodes, targetNode, moveType, isCopy)

callback.beforeEditName #

Function

默认值:null

用于捕获节点编辑按钮的 click 事件,并且根据返回值确定是否允许进入名称编辑状态,此事件回调函数最主要是用于捕获编辑按钮的点击事件,然后触发自定义的编辑界面操作。

参数说明:Function(treeId, treeNode)

callback.beforeExpand #

Function

默认值:null

用于捕获父节点展开之前的事件回调函数,并且根据返回值确定是否允许展开操作

参数说明:Function(treeId, treeNode)

callback.beforeMouseDown #

Function

默认值:null

用于捕获 zTree 上鼠标按键按下之前的事件回调函数,并且根据返回值确定触发 onMouseDown 事件回调函数

参数说明:Function(treeId, treeNode)

callback.beforeMouseUp #

Function

默认值:null

用于捕获 zTree 上鼠标按键松开之前的事件回调函数,并且根据返回值确定触发 onMouseUp 事件回调函数

参数说明:Function(treeId, treeNode)

callback.beforeRemove #

Function

默认值:null

用于捕获节点被删除之前的事件回调函数,并且根据返回值确定是否允许删除操作

参数说明:Function(treeId, treeNode)

callback.beforeRename #

Function

默认值:null

用于捕获节点编辑名称结束(Input 失去焦点 或 按下 Enter 键)之后,更新节点名称数据之前的事件回调函数,并且根据返回值确定是否允许更改名称的操作。

注意:节点进入编辑名称状态后,按 ESC 键可以放弃当前修改,恢复原名称,取消编辑名称状态

参数说明:Function(treeId, treeNode, newName, isCancel)

callback.beforeRightClick #

Function

默认值:null

用于捕获 zTree 上鼠标右键点击之前的事件回调函数,并且根据返回值确定触发 onRightClick 事件回调函数

参数说明:Function(treeId, treeNode)

callback.onAsyncError #

Function

默认值:null

用于捕获异步加载出现异常错误的事件回调函数

参数说明:Function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown)

callback.onAsyncSuccess #

Function

默认值:null

用于捕获异步加载正常结束的事件回调函数

参数说明:Function(event, treeId, treeNode, msg)

callback.onCheck #

Function

默认值:null

用于捕获 checkbox / radio 被勾选 或 取消勾选的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onClick #

Function

默认值:null

用于捕获节点被点击的事件回调函数

参数说明:Function(event, treeId, treeNode, clickFlag)

clickFlag selectedMulti autoCancelSelected && event.ctrlKey / metaKey isSelected 选中操作
1 true false false 普通选中
1 true false true 普通选中
2 true true false 追加选中
0 true true true 取消选中
1 false false false 普通选中
1 false false true 普通选中
1 false true false 普通选中
0 false true true 取消选中
callback.onCollapse #

Function

默认值:null

用于捕获节点被折叠的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onDblClick #

Function

默认值:null

用于捕获 zTree 上鼠标双击之后的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onDrag #

Function

默认值:null

用于捕获节点被拖拽的事件回调函数

参数说明:Function(event, treeId, treeNodes)

callback.onDragMove #

Function

默认值:null

用于捕获节点被拖拽过程中移动的事件回调函数,主要用于捕获 zTree 节点拖拽到的 DOM,从而操作对应的 DOM。

参数说明:Function(event, treeId, treeNodes)

callback.onDrop #

Function

默认值:null

用于捕获节点拖拽操作结束的事件回调函数

参数说明:Function(treeId, treeNodes, targetNode, moveType, isCopy)

callback.onExpand #

Function

默认值:null

用于捕获节点被展开的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onMouseDown #

Function

默认值:null

用于捕获 zTree 上鼠标按键按下后的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onMouseUp #

Function

默认值:null

用于捕获 zTree 上鼠标按键松开后的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onNodeCreated #

Function

默认值:null

用于捕获节点生成 DOM 后的事件回调函数

参数说明:Function(event, treeId, treeNode)

callback.onRemove #

Function

默认值:null

用于捕获删除节点之后的事件回调函数。

参数说明:Function(event, treeId, treeNode)

callback.onRename #

Function

默认值:null

用于捕获节点编辑名称结束之后的事件回调函数。

节点进入编辑名称状态,并且修改节点名称后触发此回调函数。如果通过直接修改 treeNode 的数据,并且利用 updateNode 方法更新,是不会触发此回调函数的。

参数说明:Function(event, treeId, treeNode, isCancel)

callback.onRightClick #

Function

默认值:null

用于捕获 zTree 上鼠标右键点击之后的事件回调函数

只要将 function 的引用赋给 onRightClick 属性,则右键点击 zTree 时,将屏蔽浏览器的右键菜单。

参数说明:Function(event, treeId, treeNode)

check #

check.autoCheckTrigger #

Boolean

默认值: false

设置自动关联勾选时是否触发 beforeCheck / onCheck 事件回调函数。

[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]

check.chkboxType #

JSON

默认值:{ "Y": "ps", "N": "ps" }

勾选 checkbox 对于父子节点的关联关系。[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]

例子:checkbox 勾选操作,只影响父级节点;取消勾选操作,只影响子级节点

var setting = {
    check: {
        enable: true,
        chkStyle: "checkbox",
        chkboxType: { "Y": "p", "N": "s" }
    }
};
check.chkStyle #

String

默认值:checkbox

勾选框类型(checkbox 或 radio)[setting.check.enable = true 时生效]

check.enable #

Boolean

默认值: false

设置 zTree 的节点上是否显示 checkbox / radio

check.nocheckInherit #

Boolean

默认值: false

当父节点设置 nocheck = true 时,设置子节点是否自动继承 nocheck = true 。[setting.check.enable = true 时生效]

注意:只使用于初始化节点时,便于批量操作。 对于已存在的节点请利用 updateNode 方法单个节点设置。

check.chkDisabledInherit #

Boolean

默认值: false

当父节点设置 chkDisabled = true 时,设置子节点是否自动继承 chkDisabled = true 。[setting.check.enable = true 时生效]

注意;只使用于初始化节点时,便于批量操作。 对于已存在的节点请利用 setChkDisabled 方法单个节点设置。

check.radioType #

data #

data.keep.leaf #

Boolean

默认值:false

String

默认值:level

radio 的分组范围。[setting.check.enable = true 且 setting.check.chkStyle = "radio" 时生效]

radioType = "level"时,在每一级节点范围内当做一个分组。

radioType = "all" 时,在整棵树范围内当做一个分组。

请注意大小写,不要改变

data.keep.parent #

Boolean

默认值:false

zTree 的节点父节点属性锁,是否始终保持 isParent = true

如果设置为 true,则所有 isParent = true 的节点,即使该节点的子节点被全部删除或移走,依旧保持父节点状态。

data.key.checked #

String

默认值:checked

zTree 节点数据中保存 check 状态的属性名称。

请勿与 zTree 节点数据的其他参数冲突,例如:checkedOld

data.key.children #

String

默认值:children

zTree 节点数据中保存子节点数据的属性名称。

data.key.name #

String

默认值:name

zTree 节点数据保存节点名称的属性名称。

data.key.title #

String

默认值:null

zTree 节点数据保存节点提示信息的属性名称。[setting.view.showTitle = true 时生效]

如果设置为 "" ,则自动与 setting.data.key.name 保持一致,避免用户反复设置

data.key.url #

String

默认值:url

zTree 节点数据保存节点链接的目标 URL 的属性名称。

特殊用途:当后台数据只能生成 url 属性,又不想实现点击节点跳转的功能时,可以直接修改此属性为其他不存在的属性名称

data.simpleData.enable #

Boolean

默认值:false

确定 zTree 初始化时的节点数据、异步加载时的节点数据、或 addNodes 方法中输入的 newNodes 数据是否采用简单数据模式 (Array)

不需要用户再把数据库中取出的 List 强行转换为复杂的 JSON 嵌套格式

data.simpleData.idKey #

String

默认值:id

节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]

data.simpleData.pIdKey #

String

默认值:pId

节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]

data.simpleData.rootPId #

String | Number

默认值:null

用于修正根节点父节点数据,即 pIdKey 指定的属性值。[setting.data.simpleData.enable = true 时生效]

edit #

edit.drag.autoExpandTrigger #

Boolean

默认值:false

拖拽时父节点自动展开是否触发 onExpand 事件回调函数。[setting.edit.enable = true 时生效]

edit.drag.isCopy #

Boolean

默认值:true

拖拽时, 设置是否允许复制节点。[setting.edit.enable = true 时生效]

规则说明:

edit.drag.isMove #

Boolean

默认值:true

拖拽时, 设置是否允许移动节点。[setting.edit.enable = true 时生效]

规则说明:

edit.drag.prev #

Boolean | Function

默认值:true

拖拽到目标节点时,设置是否允许移动到目标节点前面的操作。[setting.edit.enable = true 时生效]

拖拽目标是 根 的时候,不触发 prev 和 next,只会触发 inner

此功能主要作用是对拖拽进行适当限制(辅助箭头),需要结合 next、inner 一起使用,才能实现完整功能。

Function参数说明 Function(treeId, treeNodes, targetNode)

edit.drag.next #

Boolean | Function

默认值:true

拖拽到目标节点时,设置是否允许移动到目标节点后面的操作。[setting.edit.enable = true 时生效]

拖拽目标是 根 的时候,不触发 prev 和 next,只会触发 inner

此功能主要作用是对拖拽进行适当限制(辅助箭头),需要结合 prev、inner 一起使用,才能实现完整功能。

Function参数说明 Function(treeId, treeNodes, targetNode)

edit.drag.inner #

Boolean | Function

默认值:true

拖拽到目标节点时,设置是否允许成为目标节点的子节点。[setting.edit.enable = true 时生效]

拖拽目标是 根 的时候,不触发 prev 和 next,只会触发 inner

此功能主要作用是对拖拽进行适当限制(辅助箭头),需要结合 prev、next 一起使用,才能实现完整功能。

Function参数说明 Function(treeId, treeNodes, targetNode)

edit.drag.borderMax #

Number

默认值:10

拖拽节点成为根节点时的 Tree 内边界范围 (单位:px)。[setting.edit.enable = true 时生效]

edit.drag.borderMin #

Number

默认值:-5

拖拽节点成为根节点时的 Tree 外边界范围 (单位:px)。[setting.edit.enable = true 时生效]

edit.drag.minMoveSize #

Number

默认值:5

判定是否拖拽操作的最小位移值 (单位:px)。[setting.edit.enable = true 时生效]

edit.drag.maxShowNodeNum #

Number

默认值:5

拖拽多个兄弟节点时,浮动图层中显示的最大节点数。 多余的节点用...代替。[setting.edit.enable = true 时生效]

edit.drag.autoOpenTime #

Number

默认值:500

拖拽时父节点自动展开的延时间隔。 (单位:ms)[setting.edit.enable = true 时生效]

edit.editNameSelectAll #

Boolean

默认值: false

节点编辑名称 input 初次显示时,设置 txt 内容是否为全选状态。 [setting.edit.enable = true 时生效]

edit.enable #

Boolean

默认值: false

设置 zTree 是否处于编辑状态

请在初始化之前设置,初始化后需要改变编辑状态请使用 zTreeObj.setEditable() 方法

编辑状态规则说明

请注意大小写,不要改变

二维码 jq/qrcode #

ID: jq/qrcode

生成二维码图片的插件。

当前版本 v1.0。组件官网原地址 On GitHub

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入二维码插件依赖。

define(['jq/qrcode'], function() {
    // Now you can use Alert plugin via .qrcode() method.
});

当然,也可以直接引入使用。

require(['jq/qrcode'], function() {
    // Now you can also use Alert plugin via .qrcode() method.
});

示例 #

示例效果可以前往 二维码插件示例 页面查看。

用法 #

对一个想包含二维码图片的 jQuery 元素对象使用二维码接口方法:

$('#qrcode').qrcode("this plugin is great");

JavaScript原生组件 #

Cookie处理 cookie #

ID: cookie

一个简单、轻量的对 Cookie 进行读写、删除操作的插件。

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Cookie 插件依赖。

define(['cookie'], function() {
    // Now you can use Cookie plugin via Cookie Object.
});

当然,也可以直接引入使用。

require(['cookie'], function() {
    // Now you can also use Cookie plugin via Cookie Object.
});

JSON兼容 json #

ID: json

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 JSON 兼容插件依赖。

define(['json'], function() {
    // Now you can use JSON plugin via JSON Object.
});

当然,也可以直接引入使用。

require(['json'], function() {
    // Now you can also use JSON plugin via JSON Object.
});

代码加亮 #

ID: highlight

一款代码加亮插件。

当前版本 v9.9.0。组件原官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入代码加亮插件依赖。

define(['highlight'], function(hljs) {
    // Now you can use Highlight plugin via hljs object.
});

当然,也可以直接引入使用。

require(['highlight'], function(hljs) {
    // Now you can also use Highlight plugin via hljs object.
});

代码编辑 #

ID: codemirror

一款代码加亮和编辑插件。

当前版本 v5.9.0。组件原官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入代码编辑插件依赖。

define(['codemirror'], function(CodeMirror) {
    // Now you can use CodeMirror plugin via CodeMirror object.
});

当然,也可以直接引入使用。

require(['codemirror'], function(CodeMirror) {
    // Now you can also use CodeMirror plugin via CodeMirror object.
});

加密解密 #

ID: crypto

一款使用 JavaScript 实现的各种各样的加密算法插件。

当前版本 v3.1.6。组件原官方地址 On GitHub

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入加密解密插件依赖。

define(['crypto'], function(CryptoJS) {
    // Now you can use Crypto plugin via CryptoJS object.
});

当然,也可以直接引入使用。

require(['crypto'], function(CryptoJS) {
    // Now you can also use Crypto plugin via CryptoJS object.
});

D3 #

ID: d3

一款基于 SVG 技术的图表可视化库插件。

当前版本 v4.6.0。组件原官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 D3 插件依赖。

define(['d3'], function(D3) {
    // Now you can use D3 plugin via D3 object.
});

当然,也可以直接引入使用。

require(['d3'], function(D3) {
    // Now you can also use D3 plugin via D3 object.
});

V3版本的 D3 插件

D3 组件默认引入的是 V4 版本,相对于之前的版本做了一些优化,也修改了很多使用方式。另外网络上关于 V3 版本的文档也比较多。如果想使用 V3 版本的 D3 插件,引入 ID 为 d3-v3

Echarts #

ID: echarts

一款基于 Canvas 技术的图表可视化库插件。

当前版本 v3.5.4。组件原 官方地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Echarts 插件依赖。

define(['echarts'], function(echarts) {
    // Now you can use Echarts plugin via echarts object.
});

当然,也可以直接引入使用。

require(['echarts'], function(echarts) {
    // Now you can also use Echarts plugin via echarts object.
});

V2版本的 Echarts 插件

Echarts 组件默认引入的是 V3 版本,相对于之前的 V2 版本做了一些优化,也调整了模块组织方式。如果想使用 V2 版本的 Echarts 插件,引入 ID 为 echarts2

时间处理 #

ID: moment

JavaScript 日期处理类库。

当前版本 v2.10.3。组件原 官方地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Moment 插件依赖。

define(['moment'], function(Moment) {
    // Now you can use Moment plugin via Moment object.
});

当然,也可以直接引入使用。

require(['moment'], function(Moment) {
    // Now you can also use Moment plugin via Moment object.
});

示例 #

示例效果可以前往 Moment 插件示例 页面查看。

Plupload #

ID: plupload

一款不依赖 jQuery 的上传组件。

当前版本 v2.1.4。组件原 官方地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Plupload 插件依赖。

define(['plupload'], function(Plupload) {
    // Now you can use Plupload plugin via Plupload object.
});

当然,也可以直接引入使用。

require(['plupload'], function(Plupload) {
    // Now you can also use Plupload plugin via Plupload object.
});

示例 #

示例效果可以前往 Plupload 示例 页面查看。

Markdown语法解析 #

ID: remarkable

一款将 Markdown 语法解析为 HTML 内容的插件。

当前版本 v1.6.0。组件原官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 Remarkable 插件依赖。

define(['remarkable'], function(Remarkable) {
    // Now you can use Remarkable plugin via Remarkable object.
});

当然,也可以直接引入使用。

require(['remarkable'], function(Remarkable) {
    // Now you can also use Remarkable plugin via Remarkable object.
});

富文本编辑框 #

ID: ueditor

当前版本 v1.4.3.3。组件原官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入 UEditor 插件依赖。

define(['ueditor'], function(UE) {
    // Now you can use UEditor plugin via UE object.
});

当然,也可以直接引入使用。

require(['ueditor'], function(UE) {
    // Now you can also use UEditor plugin via UE object.
});

用法 #

ueditor 组件默认关闭了后端配置项。后端支持 phpaspasp.netjsp 四种语言,可根据自己后端的实际情况下载对应语言的处理源码包查看:

后端处理源码包:PHP | ASP | ASP.NET | JSP

可通过全局的配置项变量 window.UEDITOR_CONFIG 或组件类的配置项属性 UE.Config 修改 ueditor 组件的默认配置项。

示例 #

示例效果可以在 UEditor 示例 页面查看。

复制插件 #

ID: zeroclipboard

一款兼容复制文本内容的插件。

当前版本 v2.2.0。组件原官方地址 On GitHub;原官方 文档地址

引入依赖 #

在使用之前,需要在自己的模块依赖项中加入复制插件依赖。

define(['zeroclipboard'], function(ZeroClipboard) {
    // Now you can use ZeroClipboard plugin via ZeroClipboard object.
});

当然,也可以直接引入使用。

require(['zeroclipboard'], function(ZeroClipboard) {
    // Now you can also use ZeroClipboard plugin via ZeroClipboard object.
});