zoukankan      html  css  js  c++  java
  • Dom Builder 基于jquery

    1 //语法:$.makeDom( json)
    2 //参数:JSON格式的对象
    3 //返回:jquery格式的dom对象
    4 // 2011-02-25 XZH
    5  
    6 $.makeDom = function (d){
    7 var parent;
    8 var s= function s(d,parent){
    9 var c = $( '<'+d.tag+'>' );
    10 if(d.cls){c.addClass(d.cls);}
    11 if(d.txt){c.text(d.txt);}
    12 if(d.nvs){c.attr(d.nvs);}
    13 if(!parent){var parent=c;}
    14 else{var parent=c.appendTo(parent);}
    15 if(d.children){for(var i=0;d.children[i];i++){s(d.children[i],parent);}}
    16 return parent;
    17 };
    18 return s(d);
    19 }

    参数约定:

    { tag:'标签',cls:'快速样式',txt:'文本内容', nvs:{名:值,名:值} ,children:[ {...} ] }


    示例:

    1 talkbox = {
    2 tag:'div',cls:'talkbox',
    3 children:[
    4 {
    5 tag:'div',cls:'titlebar',
    6 children:[
    7 {tag:'div',cls:'avatar'},
    8 {tag:'div',cls:'ctrlbtns'},
    9 {tag:'div',cls:'talktitle'}
    10 ]
    11 },
    12 {tag:'div',cls:'viewmsgarea'},
    13 {tag:'div',cls:'toolsbar'},
    14 {tag:'textarea',cls:'inputmsgarea',txt:'在此输入消息'},
    15 {tag:'input',cls:'sendmsgbutton',namevalue:{type:'button',value:'发送消息'} }
    16 ]
    17 }
    18
    19
    20 $.makeDom( talkbox )

    返回:


    [<div class=​"talkbox">​
    <div class=​"titlebar">​…​</div>​
    <div class=​"viewmsgarea">​</div>​
    <div class=​"toolsbar">​</div>​
    <textarea class=​"inputmsgarea">​在此输入消息​</textarea>​
    <input class=​"sendmsgbutton">​
    </div>​]


    搜索了下,貌似只有prototype的dom builder ;貌似项目的IM用的是JQ的,所以为JQ写了个DOM BIULDER。

    效率上考虑,如果要更快的话可以替换掉 操作DOM对象的函数

    1.对象创建   $('<'+tpl.tag+'>'),返回一个 jq 格式的dom对象,换成 document.createElement  就行
    2.对象添加  $(obj).appendTo(parent) 将obj添加至parent,同时返回obj,这个可能不能直接用原生的 appendChild 方法,得自己去做一个
    3.文本创建 $(obj).text( string ) 替换 createTextNode
    4.样式添加 $(obj).addClass( string )
    5.属性添加 $(obj).attr( json )

  • 相关阅读:
    [APIO2018]铁人两项 --- 圆方树
    SPOJ1811 && SPOJ1812
    [BZOJ4627][BeiJing2016]回转寿司(线段树)
    NOIP2018提高组题解
    [BZOJ4340][BJOI2015]隐身术(后缀数组)
    [BZOJ4338][BJOI2015]糖果(扩展Lucas)
    [BZOJ4336][BJOI2015]骑士的旅行(树链剖分+线段树)
    [BZOJ4419][SHOI2013]发微博
    [BZOJ2878][NOI2012]迷失游乐园(环套树DP+概率)
    [BZOJ1791][IOI2008]Island岛屿(环套树DP)
  • 原文地址:https://www.cnblogs.com/webooxx/p/1964818.html
Copyright © 2011-2022 走看看