UNPKG

@mdui/jq

Version:

拥有和 jQuery 相似 API 的轻量级 JavaScript 工具库

46 lines (45 loc) 1.47 kB
import { $ } from '../$.js'; import { dataAttr, get, getAll, set, setAll } from '../shared/data.js'; import { isUndefined, isObjectLike, eachObject, toCamelCase, } from '../shared/helper.js'; import './each.js'; // eslint-disable-next-line @typescript-eslint/no-explicit-any $.fn.data = function (key, value) { // 获取所有值 if (isUndefined(key)) { if (!this.length) { return undefined; } const element = this[0]; const resultData = getAll(element); // window, document 上不存在 `dataset` if (element.nodeType !== 1) { return resultData; } // 若值未通过 data 方法设置,则从 `dataset` 中获取值。dataset 中读取的 key 会自动转为驼峰法 eachObject(element.dataset, (key) => { resultData[key] = dataAttr(element, key, resultData[key]); }); return resultData; } // 同时设置多个值 if (isObjectLike(key)) { return this.each(function () { setAll(this, key); }); } // value 传入了 undefined if (arguments.length === 2 && isUndefined(value)) { return this; } // 设置值 if (!isUndefined(value)) { return this.each(function () { set(this, key, value); }); } // 获取值 if (!this.length) { return undefined; } return dataAttr(this[0], toCamelCase(key), get(this[0], key)); };