码迷,mamicode.com
首页 > 其他好文 > 详细

template

时间:2017-04-12 14:58:53      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:context   mat   name   click   key   array   alert   数据   oct   

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>template</title>
<script src="http://hs.3g.cnfol.com/uh/Js/WeiXin/jquery.1.91.js"></script>
</head>
<body>
 
<script id="tpl" type="type/template">
    <h2 onclick="alert(5)">{{  name }}</h2>
    <span data-if="age>25">{{ age  }}</span>
    <div data-show="showbool">8888</div>
</script>
 
<div id="context" data-for data-html="tpl"></div>
 
<script>
 
    // 数据data
    var data  = [{
        name : ‘zhl‘,
        age : 30,
        showbool : false,
        dataif:true
    },{
        name : ‘mll‘,
        age : 20,
        showbool : false,
    },{
        name : ‘zhl‘,
        age : 10,
        showbool : true,
    }]
    /*var data  = {
        name : ‘zhl‘,
        age : 30,
        showbool : false,
        dataif:true
    };*/
 
    // 模版化调用
    // template(id,data);
    // @id : 放元素的容器
    // @data : 数据
    template(‘context‘,data);
 
function template(id,data){
    var wrapParent = $(‘#‘+id);
    var tplhtml = $(wrapParent).attr("data-html");
    var tplstr = $(‘#‘+tplhtml).html();
 
    var re = /{{\s*(\w+)\s*}}/g;
 
    if(data instanceof Array){
        var strtemp = ‘‘;
        for(var i=0; i<data.length; i++){
            strtemp += dataHtmlStr(data[i]);
        }
        $(wrapParent).html(strtemp);
    }else{
        $(wrapParent).html(dataHtmlStr(data));
    }
 
    function dataHtmlStr(data){
        return (function(){
            return tplstr.replace(re,function(matchs,key){
                return data[key];
            });
        })();
    }
 
    var objChild = $(wrapParent).children();
    var tplLen = data.length;
 
    var otplChild = jQuery.parseHTML($(‘#‘+tplhtml).html());
    var otplnum = 0;
    for(var i=0; i<otplChild.length;i++){
        if(otplChild[i].nodeType == 1){
            otplnum++;
        }
    }
 
    var reg = /^[a-z|A-Z|_]+[a-z|A-Z|_|\d]*/g;
 
    matchStr(‘data-if‘);
    matchStr(‘data-show‘);
 
    function matchStr(attr){
        for(var i = 0; i<objChild.length;i++){
            var strDataIf = $(objChild[i]).attr(attr);
            var strMatch = $(objChild[i]).attr(attr) ? $(objChild[i]).attr(attr).match(reg)[0] : ‘‘;
 
            if(strMatch){
                strDataIf = strDataIf.replace(reg,data instanceof Array ? data[Math.floor(i/3)][strMatch] : data[strMatch]);
                if(eval(strDataIf) == true){
                    $(objChild[i]).insertBefore($(objChild[i+1]));
                }else if(eval(strDataIf) == false){
                    $(objChild[i]).remove();
                }
            }   
        }
    }
}
 
 
</script>
 
</body>
</html>

template

标签:context   mat   name   click   key   array   alert   数据   oct   

原文地址:http://www.cnblogs.com/vsmart/p/6699149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!