jQueryオペレーションDOMデータ取得ツールクラス
10588 ワード
本文は自分でカプセル化したいくつかの泥棒の使いやすいツール類を記録して、大部分はjQueryので、他のプラグインを使うかもしれません.皆さんのテスト使用を歓迎します.バグが発見されたら、私信やコメントをお願いします.
1.DOMから直接取得したデータをJSONにカプセル化
2.JSONからDOMへの設定
前の使用に合わせることができます
しばらくはこんなに多いので,後日補充します.
1.DOMから直接取得したデータをJSONにカプセル化
/*
*
* opt:
* [" ,key","#id",".class"]
*
* {
* key:{
* $:" "
* types:" dom |VAL|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)
}
}
}
}
},
しばらくはこんなに多いので,後日補充します.