jQueryオペレーションDOMデータ取得ツールクラス

10588 ワード

本文は自分でカプセル化したいくつかの泥棒の使いやすいツール類を記録して、大部分はjQueryので、他のプラグインを使うかもしれません.皆さんのテスト使用を歓迎します.バグが発見されたら、私信やコメントをお願いします.
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)
                }
            }

        }
    }
},

しばらくはこんなに多いので,後日補充します.