正准备画一个类似的
$("#xxxx").app("li",{css:{}}) .app("a",{href:"http://www.zaobao.com"}) .app("img",{src:"img/confirm.gif"}) .after("span","游戏1");
锁定老帖子 主题:顺手写了个小轮子
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-05-14
最后修改:2012-05-14
<li> <a href="http://www.zaobao.com"> <img src="img/confirm.gif"> <span>游戏1</span> </a> </li> 用dom实现 var li = document.createElement("li") var a = document.createElement("a"); a.href = pojo.url; var img = document.createElement("img"); img.src = pojo.imgUrl; var span = document.createElement("span"); span.innerHTML = pojo.name; a.appendChild(img); a.appendChild(span); li.appendChild(a); return li; 尼玛啊,才4个标签,代码居然需要11行。是可忍,叔叔也不可忍。用拼凑html的方法,虽然代码简单一点,但是html复杂了,也很难维护。 想写个类简化一下。思路是搞个html dsl(面向领域的语言)出来。于是写了个tag类,刚才那段代码就变成了 var li = new Tag("li"); //构建一个li标签 var a = li.a().attr("href",pojo.url); //在li中方一个a标签 ,href是pojo的url a.img().attr("src",pojo.imgUrl); //在a标签中放img a.span(pojo.name); //在a标签中放span return li.toDom(); //返回li标签的dom对象 11行代码编程了5行代码。强多了。定义一个div就可以这样写 var tag = new Tag("div"); tag.html("google"); tag.style("color","red") document.getElementById("d1").innerHTML = tag.toHtml(); 定义ul下有3个li var ul = new Tag("ul"); ul.li('aaa'); ul.li(2).style('color','red'); ul.li(3); document.getElementById("d2").innerHTML = ul.toHtml(); document.getElementById("d3").appendChild(ul.toDom()); 定义一个5行的table变成了 var table = new Tag("table"); for(var i=1;i<5;i++){ var tr = table.tr(); tr._td(1+i) ._td(2+i+"a") ._td(3+i) ._td(4+i) ._td(5+i); } document.getElementById("d6").innerHTML = table.toHtml(); document.getElementById("d7").appendChild(table.toDom()); 写完以后,自我感觉十分良好,比从头构建dom或者拼html强多了。唯一不知道的是这个小轮子前人有没有写过? 代码见附件 [/size] 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-05-14
我说你直接把json解码,然后自己去直接写一个html的字符串然后丢进html()不是也很快么
还append啥啥啥的 比如 a = {name:'游戏1',url:'http://www.zaobao.com',imgUrl:'img/confirm.gif'}; $('li:eq(3)').html('<li><a href="' +a.url + '"><img src="' + a.imgUrl + '"><span>' + a.name + '</span></a><li>' ) 两行? 不过每一行长点。-_-! |
|
返回顶楼 | |
发表时间:2012-05-15
passionke 写道 我说你直接把json解码,然后自己去直接写一个html的字符串然后丢进html()不是也很快么
还append啥啥啥的 比如 a = {name:'游戏1',url:'http://www.zaobao.com',imgUrl:'img/confirm.gif'}; $('li:eq(3)').html('<li><a href="' +a.url + '"><img src="' + a.imgUrl + '"><span>' + a.name + '</span></a><li>' ) 两行? 不过每一行长点。-_-! 就是不想拼html 上段代码可以写成 var li = new Tag("li"); //构建一个li标签 var a = li.a().attr("href",pojo.url); //在li中方一个a标签 ,href是pojo的url a.img().attr("src",pojo.imgUrl); //在a标签中放img a.span(pojo.name); //在a标签中放span 可维护性会更好 |
|
返回顶楼 | |
发表时间:2012-11-22
强烈支持楼主的新思路,很有创新精神啊,有点类似于jQuery的包装方法,建议楼主再封装出一套其他语言操作xml的库
|
|
返回顶楼 | |
发表时间:2012-11-29
html拼,有可能前端就可以修改代码了。你这样一封装,前端只有望着叹气了。
|
|
返回顶楼 | |
发表时间:2013-02-12
最后修改:2013-02-12
正准备画一个类似的 $("#xxxx").app("li",{css:{}}) .app("a",{href:"http://www.zaobao.com"}) .app("img",{src:"img/confirm.gif"}) .after("span","游戏1");
|
|
返回顶楼 | |