本文记录一下自己封装的一些贼好用的工具类,大多都是jQuery的,可能有使用其他插件。欢迎大家测试使用,若发现有BUG,请私信或评论。
1.从DOM中直接获取数据封装为JSON
/*
*
* opt:
* ["选择器,key","#id",".class"]
* 或者
* {
* key:{
* $:"选择器"
* types:"获取dom的哪个属性|VAL<$.val()>|TEXT<$.text()>"
* }
* }
* parent:
* 在某个dom下查找
* */
getJsonFormDOM: function (opt, parent) {
var res = {}
if (!opt) {
opt = {};
}
//如果是数组
if (typeof opt === 'object' && !isNaN(opt.length)) {
var opt2 = {}
$(opt).each(function (index, item) {
if (typeof item === "object") {
opt2[item.key] = item
return;
}
var itemArr = item.split(",");
if (itemArr.length > 1) {//逗号隔开的第一个是选择器,第二个是key
opt2[itemArr[1]] = itemArr[0];
} else {//没用逗号隔开的直接以id或者类名为key
opt2[item.substring(1)] = item;
}
});
opt = opt2;
}
for (var key in opt) {
var val = opt[key];
var $o, types = "VAL";
if (typeof val === "object") {
if (parent) {
$o = $(parent).find(val["$"]);
} else {
$o = $(val["$"]);
}
types = val.types || "VAL";
} else {
if (parent) {
$o = $(parent).find(val);
} else {
$o = $(val);
}
if ($o.length) {
var tagName = $o[0].tagName.toUpperCase();
if (tagName == "INPUT" || tagName == "TEXTAREA") {
types = "VAL";
} else {
types = "TEXT";
}
}
}
if (types == "TEXT") {
res[key] = $o.text() || "";
} else if (types == "VAL") {
res[key] = $o.val() || "";
} else {
res[key] = $o.attr(types) || "";
}
}
return res;
}
2.设置JSON到DOM
可以配合上一个使用
setJsonToDOM: function (opt, parent) {
if (!opt) {
opt = {};
}
//如果是数组
if (typeof opt === 'object' && !isNaN(opt.length)) {
$(opt).each(function (index, item) {
var $o;
if (typeof item === "string") {
var itemArr = item.split(",");
if (itemArr.length > 1) {//逗号隔开的第一个是选择器,第二个是value
if (parent) {
$o = $(parent).find(itemArr[0]);
} else {
$o = $(itemArr[0]);
}
$o.val(itemArr[1]);
} else {//没用逗号隔开的直接置为空
if (parent) {
$o = $(parent).find(item);
} else {
$o = $(item);
}
$o.val("");
}
} else {//item is object
if (parent) {
$o = $(parent).find(item["$"]);
} else {
$o = $(item["$"]);
}
if ($o.length) {
var tagName = $o[0].tagName.toUpperCase();
if (tagName == "INPUT" || tagName == "TEXTAREA") {
$o.val(item("val"))
} else {
$o.text(item("val"))
}
}
}
});
} else {//opt is object
for (var key in opt) {
var val = opt[key];
var $o;
if (parent) {
$o = $(parent).find("[name='" + key + "']");
if (!$o.length) {//不是name
$o = $(parent).find("#" + key);
}
} else {
$o = $("[name='" + key + "']");
if (!$o.length) {
$o = $("#" + key);
}
}
if ($o.length) {
var tagName = $o[0].tagName.toUpperCase();
if (tagName == "INPUT" || tagName == "TEXTAREA") {
$o.val(val);
} else {
$o.text(val)
}
}
}
}
},
暂时这么多,日后补充