辅助函数 ============================== vConsole 提供一些辅助函数以便开发插件。 辅助函数会按照类型,挂载到 vConsole 的不同属性中: - `vConsole.tool`:辅助函数。 - `vConsole.$`:DOM 操作相关函数。 ## vConsole.tool ### vConsole.tool.isString(value) ### vConsole.tool.isArray(value) ### vConsole.tool.isBoolean(value) ### vConsole.tool.isElement(value) ### vConsole.tool.isFunction(value) ### vConsole.tool.isNull(value) ### vConsole.tool.isNumber(value) ### vConsole.tool.isObject(value) ### vConsole.tool.isSymbol(value) ### vConsole.tool.isUndefined(value) 判断变量是否为指定的类型。 ##### 返回: - Boolean ### vConsole.tool.htmlEncode(text) 将文本转为 HTML 安全的字符串。 ##### 参数: - (required) text: 字符串。 ##### 返回: - String ### vConsole.tool.setStorage(key, value) 将数据写入 `localStorage`。前缀 `vConsole_` 会自动加到 `key` 之前。 在一些设备中,`localStorage` 可能不存在,因此 `value` 将无法正常存储。所以不要使用此方法来保存持久性数据。 ##### 参数: - (required) key: 字符串,数据的键名。 - (required) value: 字符串,数据的键值。 ##### 返回: - 无 ##### 例子: ```javascript vConsole.tool.setStorage('count', 1); ``` ### vConsole.tool.getStorage(key) 获取 `localStorage` 的数据。前缀 `vConsole_` 会自动加到 `key` 之前。 ##### 参数: - (required) key: A string, the name of data. ##### 返回: - String ##### 例子: ```javascript var num = vConsole.tool.setStorage('count'); // => 1 ``` ## vConsole.$ ### vConsole.$.one(selectors, baseElement) 获取在 `document` 或 `baseElement` 中匹配 `selectors` 的首个 element 元素。 ##### 参数: - (required) selectors: CSS 选择器字符串,多个选择器以空格隔开。 - (optional) baseElement: Element 对象,默认为 `document`. ##### 返回: - Element object ##### 例子: ```javascript var $page = vConsole.$.one('#my_page'); var $item = vConsole.$.one('.item', $page); ``` ### vConsole.$.all(selectors, baseElement) 获取在 `document` 或 `baseElement` 中匹配 `selectors` 的所有 element 元素。 ##### 参数: - (required) selectors: CSS 选择器字符串,多个选择器以空格隔开。 - (optional) baseElement: Element 对象,默认为 `document`. ##### 返回: - Element object ##### 例子: ```javascript var $page = vConsole.$.one('#my_page'); var $items = vConsole.$.all('.item', $page); ``` ### vConsole.$.addClass(elements, className) 为一个或一组 element 添加 class 样式名。 ##### 参数: - (required) elements: 单个或一个数组的 element 对象。 - (required) className: 字符串,多个样式名以空格隔开。 ##### 返回: - 无 ##### 例子: ```javascript var $items = vConsole.$.all('.item'); vConsole.$.addClass($items, 'selected'); ``` ### vConsole.$.removeClass(elements, className) 为一个或一组 element 删除 class 样式名。 ##### 参数: - (required) elements: 单个或一个数组的 element 对象。 - (required) className: 字符串,多个样式名以空格隔开。 ##### 返回: - 无 ##### 例子: ```javascript var $items = vConsole.$.all('.item'); vConsole.$.removeClass($items, 'selected'); ``` ### vConsole.$.hasClass(element, className) 判断一个 element 对象是否有指定的样式名。 ##### 参数: - (required) element: Element 对象。 - (required) className: 字符串。 ##### 返回: - Boolean ##### 例子: ```javascript var $page = vConsole.$.one('#my_page'); if (vConsole.$.hasClass($page, 'actived')) { // do something } ``` ### vConsole.$.bind(elements, eventType, fn, useCapture) 绑定一个事件到一个或一组 element。 ##### 参数: - (required) elements: 单个或一个数组的 element 对象。 - (required) eventType: 字符串,事件类型。 - (required) fn: 事件回调函数。 - (optional) useCapture: 布尔值,用于设定是使用 capturing 还是 bubbling。默认为 `false`. ##### 返回: - 无 ##### 例子: ```javascript var $btn = vConsole.$.one('#submit'); vConsole.$.bind($btn, 'click', function(event) { event.preventDefault(); alert('submit!'); }); ``` ### vConsole.$.delegate(element, eventType, selectors, fn) 绑定一个事件到一个 element 中,只有匹配 selecors 的子元素才会触发事件。 ##### 参数: - (required) element: Element 对象。 - (required) eventType: 字符串,事件类型。 - (required) selectors: CSS 选择器字符串,多个选择器以空格隔开。 - (required) fn: 事件回调函数。 ##### 返回: - 无 ##### 例子: ```javascript var $page = vConsole.$.one('#my_page'); vConsole.$.delegate($page, 'click', '.item', function(event) { vConsole.$.addClass(this, 'selected'); // this => '.item' }); ``` ### vConsole.$.render(tpl, data, toString) Compile a template into an element object or a HTML string with given data. 使用指定数据将模板文本编译成 element 对象或者 HTML 字符串。 ##### 参数: - (required) tpl: 模板字符串。 - (required) data: 一组 key-value 形式的数据源。 - (optional) toString: 布尔值,用于设定返回值为 element 对象还是 HTML 字符串,默认为 `false`。 ##### 返回: - Element 对象或者 HTML 字符串 ##### 模板语法: If: ```html {{if}} ... {{else}} ... {{/if}} ``` For: ```html {{for (var i=0; i<10; i++)}} ... {{continue}} {{break}} {{/for}} ``` Switch: ```html {{switch (flag)}} {{case 1}} ... {{break}} {{default}} ... {{/switch}} ``` Print: ```html {{flag}} ``` ###### 例子: ```javascript var tpl = '