From 04394340a557ca26a9c2bf3faea3e7ab004e8c78 Mon Sep 17 00:00:00 2001 From: sight <1453017105@qq.com> Date: Sun, 22 Oct 2023 07:07:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20lay=20=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=87=BD=E6=95=B0=20JSDoc=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E5=92=8C=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/lay.js | 181 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 167 insertions(+), 14 deletions(-) diff --git a/src/modules/lay.js b/src/modules/lay.js index 4c4791b2..4339217d 100644 --- a/src/modules/lay.js +++ b/src/modules/lay.js @@ -7,7 +7,10 @@ var MOD_NAME = 'lay'; // 模块名 var document = window.document; - // 元素查找 + /** + * 元素查找 + * @param {string | HTMLElement | JQuery} selector + */ var lay = function(selector){ return new Class(selector); }; @@ -49,8 +52,15 @@ Class.fn = Class.prototype = []; Class.fn.constructor = Class; - - // 普通对象深度扩展 + + /** + * 将两个或多个对象的内容深度合并到第一个对象中 + * @callback ExtendFunc + * @param {*} target - 一个对象 + * @param {...*} objectN - 包含额外的属性合并到第一个参数 + * @returns {*} 返回合并后的对象 + */ + /** @type ExtendFunc*/ lay.extend = function(){ var ai = 1; var length; @@ -77,7 +87,10 @@ return args[0]; }; - // ie 版本 + /** + * IE 版本 + * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false + */ lay.ie = function(){ var agent = navigator.userAgent.toLowerCase(); return (!!window.ActiveXObject || "ActiveXObject" in window) ? ( @@ -98,8 +111,18 @@ return this; }; - - // 数字前置补零 + + /** + * 数字前置补零 + * @param {number | string} num - 原始数字 + * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零 + * @returns {string} 返回补 0 后的数字 + * @example + * ```js + * lay.digit(6, 2); // "06" + * lay.digit('7', 3); // "007" + * ``` + */ lay.digit = function(num, length){ if(!(typeof num === 'string' || typeof num === 'number')) return ''; @@ -112,7 +135,16 @@ return num < Math.pow(10, length) ? str + num : num; }; - // 创建元素 + /** + * 创建元素 + * @param {string} elemName - 元素的标签名 + * @param {{attrName: string, attrValue:string}} [attr] - 添加到元素上的属性 + * @returns {HTMLElement} 返回创建的 HTML 元素 + * @example + * ```js + * lay.elem('div', {id: 'test'}) //
+ * ``` + */ lay.elem = function(elemName, attr){ var elem = document.createElement(elemName); lay.each(attr || {}, function(key, value){ @@ -121,12 +153,43 @@ return elem; }; - // 当前页面是否存在滚动条 + /** + * 当前页面是否存在滚动条 + * @returns {boolean} 是否存在滚动条 + * @example + * ``` + * lay.hasScrollbar() // true 或 false + * ``` + */ lay.hasScrollbar = function(){ return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight); }; - // 获取 style rules + /** + * 获取 style rules + * @param {HTMLStyleElement} style - HTMLStyle 元素 + * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历 + * @returns {CSSRuleList } 返回 `style rules` + * @example + * ``` + * + * + * lay.getStyleRules($('#test')[0], function(rule, index){ + * if(rule.selectorText === '.lay-card'){ + * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}' + * rule.style.color = '#EEE'; + * return true; // 终止遍历 + * } + * }) // RuleList + * ``` + */ lay.getStyleRules = function(style, callback) { if (!style) return; @@ -142,7 +205,26 @@ return rules; }; - // 创建 style 样式 + /** + * 创建 style 样式 + * @param {Object} options - 可配置的选项 + * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器 + * @param {string} [options.id] - 样式元素的 id,默认自增 + * @param {string} options.text - 样式内容 + * @returns {HTMLStyleElement} 返回创建的样式元素 + * @example + * ```html + *