网上找到的方法,特记录下

<div title="{name:'haha',id:6}" style="background:pink" onmousedown="eval('var obj='+this.title);alert(a.name);">lalala</div>

这里用到的灵感来源于ajax返回的json格式数据,要使json形式的字符串转化为JavaScript对象,通常使用的是:

eval('var re='+'o.responseText.replace(/<!--(.*?)-->/g, ''));

同理,倘若,你使用的library是允许你直接访问dom的原生节点时,比如yui2,或者你没用任何lib,而你需要服务器端在你的div, li, 或是任何标签上吐给你一系列(数量>2)的值的时候,我推荐使用json的形式在dom里存放这些数据。
首先,它很方便,只要eval之后,就可以根据这个生成的obj以简单高效的key=value方式来获取值。

其次,json最重要的贡献在于它在人类语言和机器语言之间的平衡。既然它被douglas发明出来,为什么不使用它呢?:)
看看这些不好的例子:
1)使用titile="haha&6&func":

<div title="haha&6" style="background:pink" onmousedown="var arr=this.title.split('&');alert(arr[0])">

2)使用这个标签的所有属性来存放值:

<div title="haha" lang="6" align="v">

缺点是:当后端需要传给前端的数据愈多,你会满大街的找节点的原生属性。

这两种方法的共同缺点是:
在前端开发这种需求和开发人员都时常变动的情况下,当后端和前段工程师都换了人,谁会知道你的"haha"是代表着"title",而"6"是id的值?

posted on 2014-04-17 11:27  KnightY  阅读(313)  评论(0编辑  收藏  举报