当前位置 : 主页 > 网络编程 > JavaScript >

jQuery简单的模型存取。

来源:互联网 收集:自由互联 发布时间:2021-06-28
利用jQuery进行简单的数据模型绑定。 (function(global,jquery){ jquery.fn.extend(function(){ getModel:function(property){ var that=jquery(this); var result=new global.Object(); property=property||"property"; var name=that.data(pr
利用jQuery进行简单的数据模型绑定。
(function(global,jquery){
    jquery.fn.extend(function(){
        getModel:function(property){
            var that=jquery(this);
            var result=new global.Object();
            property=property||"property";
            var name=that.data(property);
            if(name&&name.length>0){
                var html=that.prop("tagName");
                switch(html){
                    case "IMG":
                        result[name]=that.attr("src");
                        break;
                    case "INPUT":
                        var type=that.attr("type");
                        switch(type){
                            case "checkbox":
                                var checked=that.is(":checked");
                                result[name]=checked?"True":"False";
                                break;
                            case "hidden":
                            case "password":
                            case "text":
                                result[name]=that.val();
                                break;
                            case "radio":
                                if(that.is(":checked")){
                                    result[name]=that.val();
                                }
                                break;
                        }
                        break;
                    case "SELECT":
                    case "TEXTAREA":
                        result[name]=that.val();
                        break;
                }
                return result;
            }
            var children=that.children();
            if(children&&children.length>0){
                children.each(function(index,item){
                    var model=jquery(item).getModel(property);
                    for(var i in model){
                        result[i]=model[i];
                    }
                });
            }
            return result;
        },
        setModel:function(model,property){
            var that=jquery(this);
            if(!model||typeof model!="object"){
                return that;
            }
            property=property||"property";
            var name=that.data(property);
            if(name&&name.length>0){
                if(!(name in model)){
                    return that;
                }
                var value=model[name];
                if(!value||value=="null"){
                    return that;
                }
                var html=that.prop("tagName");
                switch(html){
                    case "IMG":
                        that.attr("src",value);
                        break;
                    case "INPUT":
                        var type=that.attr("type");
                        switch(type){
                            case "checkbox":
                                var checked=value===true;
                                checked=checked||value==="True";
                                checked=checked||global.Number(value)>0;
                                that.prop("checked",checked);
                                break;
                            case "hidden":
                            case "password":
                            case "text""
                                that.val(value);
                                break;
                            case "radio":
                                var val=that.val();
                                that.prop("checked",val==value);
                                break;
                        }
                        break;
                    case "SELECT":
                    case "TEXTAREA":
                        that.val(value);
                        break;
                }
                return that;
            }
            var children=that.children();
            if(children&&children.length>0){
                children.each(function(index,item){
                    jquery(item).setModel(model,property);
                });
            }
            return that;
        }
    });
})(window,window.jQuery);
网友评论