jquery 添加自定义属性问题

JasonZhou 2012-03-26 11:04:44
想在一个html元素里添加一个自定义属性,例如:

<div id="123" item=''></div>

item就是我给div自定义的属性,但是现在item属性只能是字符串数据。

我想让item属性存储数组类型数据,请问用jquery要怎么样实现?

下面是我在一个CMS里看到的代码:

<a class="current" id='_Menu_120' hidefocus='true' href="javascript:void(0)"><b>文章资讯</b></a>


var arr = new Array();
arr = [];
arr.push([129,"文档编辑","Document/DocList.jsp","Icons/icon003a11.gif"]);
arr.push([303,"文档审核","Document/WorkList.jsp","Icons/icon003a11.gif"]);
arr.push([397,"文档回收站","Document/RecycleBin.jsp","Icons/icon003a11.gif"]);
arr.push([131,"个人备忘","Document/Notes.jsp","Icons/icon003a11.gif"]);
arr.push([132,"短消息","Document/Message.jsp","Icons/icon003a11.gif"]);
$("_Menu_120").ChildArray=arr;

ChildArray应该是它为a标签自定义的属性。不知道用jquery要怎么做?
...全文
3970 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 danica7773 的回复:]

set: $(selector).data('ChildArray', ['a', 1]);

get: $(selector).data('ChildArray');
[/Quote]

这个才是正道, 楼主明白了吧
JasonZhou 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 calmcrime 的回复:]

HTML code

<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
<script src="http://code.jquery.com/jquery……
[/Quote]

arr.push这种方式不行吗?
001007009 2012-03-26
  • 打赏
  • 举报
回复

<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="test">123</div>
<script>
$("#test").attr('ChildArray','[[129,"文档编辑","Document/DocList.jsp","Icons/icon003a11.gif"],[303,"文档审核","Document/WorkList.jsp","Icons/icon003a11.gif"]]');
var c = $("#test").attr('ChildArray');
var s = eval('('+c+')');
alert(s.length);
</script>
</body>
</html>


JasonZhou 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 calmcrime 的回复:]

HTML code

<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
<script src="http://code.jquery.com/jquery……
[/Quote]



arr = [];
arr.push([129,"文档编辑","Document/DocList.jsp","Icons/icon003a11.gif"]);
arr.push([303,"文档审核","Document/WorkList.jsp","Icons/icon003a11.gif"]);
arr.push([397,"文档回收站","Document/RecycleBin.jsp","Icons/icon003a11.gif"]);
arr.push([131,"个人备忘","Document/Notes.jsp","Icons/icon003a11.gif"]);
arr.push([132,"短消息","Document/Message.jsp","Icons/icon003a11.gif"]);
$("#_Menu_120").attr('ChildArray',arr);

var c = $("#_Menu_120").attr('ChildArray');
var s = eval('('+c+')');
alert(s);

出错:
\u56FE\u7247\u5E93 is not defined
[在此错误处中断] var s = eval('('+c+')');
JasonZhou 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zsx841021 的回复:]

$("_Menu_120").attr('ChildArray','arr')试试这样
[/Quote]
试过,没用
三石-gary 2012-03-26
  • 打赏
  • 举报
回复
$("_Menu_120").attr('ChildArray','arr')试试这样
001007009 2012-03-26
  • 打赏
  • 举报
回复

<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="test" item="['a','b','c','d']"></div>
<script>
var s = $('#test').attr('item');
s = eval('('+s+')');
alert( s[0] )
</script>
</body>
</html>



楼主 这个意思?
峭沙 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 danica7773 的回复:]

set: $(selector).data('ChildArray', ['a', 1]);

get: $(selector).data('ChildArray');
[/Quote]自定义属性为什么要体现在HTML上面呢?
用$('#123').data('item', [1,2,3]); // id不能以数字开头,自己修改吧
取的时候用var arr = $('#123').data('item');

或者$('#123')[0].item = [1,2,3];
取值:var arr = $('#123')[0].item;
又或者用纯js,var div = document.getElementById('123'); div.item = [1,2,3];
取值: var arr = div.item;
峭沙 2012-03-26
  • 打赏
  • 举报
回复
自定义属性为什么要体现在HTML上面呢?
用$('#123').data('item', {...}); // id不能以数字开头,自己修改吧
或者用纯js,var div = document.getElementById('123'); div.item = {...};
打字员 2012-03-26
  • 打赏
  • 举报
回复
set: $(selector).data('ChildArray', ['a', 1]);

get: $(selector).data('ChildArray');
Acesidonu 2012-03-26
  • 打赏
  • 举报
回复
$('#_Menu_120').attr('ChildArray', arr.join(','));


hch126163 2012-03-26
  • 打赏
  • 举报
回复
attr 保存的是字符串

var arr=[]; 是object 不是字符串
把object 转成字符串,再设置就没问题

arr = [];
arr.push([129,"文档编辑","Document/DocList.jsp","Icons/icon003a11.gif"]);
arr.push([303,"文档审核","Document/WorkList.jsp","Icons/icon003a11.gif"]);
arr.push([397,"文档回收站","Document/RecycleBin.jsp","Icons/icon003a11.gif"]);
arr.push([131,"个人备忘","Document/Notes.jsp","Icons/icon003a11.gif"]);
arr.push([132,"短消息","Document/Message.jsp","Icons/icon003a11.gif"]);
$("#_Menu_120").attr('ChildArray',JSON.serialize(arr));

下面是通用的Object转换成json的JS代码
//用法
//var obj=new Object();
//obj.Name= 'Nams ';
//obj.Sex=1;
//JSON.serialize(obj);//will get: {Name: 'Nams ',Sex:1}

if(typeof StringBuilder== 'undefined '){
StringBuilder=function(initialText)
{
var _parts = new Array();
if ((typeof(initialText) == 'string ')
&&(initialText.length != 0))
_parts.push(initialText);

this.append = function(text) {
if ((text == null) || (typeof(text) == 'undefined ')) {
return;
}
if ((typeof(text) == 'string ') && (text.length == 0)) {
return;
}
_parts.push(text);
}
this.appendLine = function(text) {
this.append(text);
_parts.push( '\r\n ');
}
this.clear = function() {
_parts.clear();
}
this.isEmpty = function() {
return (_parts.length == 0);
}
this.toString = function(delimiter) {
return _parts.join(delimiter || ' ');
}
}
}
JSON = new function() {

function serializeWithBuilder(object, stringBuilder) {
var i;

switch (typeof object) {
case 'object ':
if (object) {
if (object.join) {//if is array, you can using another method implement
stringBuilder.append( '[ ');
for (i = 0; i < object.length; ++i) {
if (i > 0) {
stringBuilder.append( ', ');
}
stringBuilder.append(serializeWithBuilder(object[i], stringBuilder));
}
stringBuilder.append( '] ');
}
else {
if (typeof object.serialize == 'function ') {
stringBuilder.append(object.serialize());
break;
}
stringBuilder.append( '{ ');
var needComma = false;
for (var name in object) {
if (name.startsWith( '$ ')) {
continue;
}
var value = object[name];
if (typeof value != 'undefined ' && typeof value != 'function ') {
if (needComma)
stringBuilder.append( ', ');
else
needComma = true;

stringBuilder.append(serializeWithBuilder(name, stringBuilder));
stringBuilder.append( ': ');
stringBuilder.append(serializeWithBuilder(value, stringBuilder));
}
}
stringBuilder.append( '} ');
}
}
else {
stringBuilder.append( 'null ');
}
break;

case 'number ':
if (isFinite(object)) {
stringBuilder.append(String(object));
}
else {
stringBuilder.append( 'null ');
}
break;

case 'string ':
stringBuilder.append( ' " ');
var length = object.length;
for (i = 0; i < length; ++i) {
var curChar = object.charAt(i);
if (curChar > = ' ') {
if (curChar == '\\ ' || curChar == ' " ') {
stringBuilder.append( '\\ ');
}
stringBuilder.append(curChar);
}
else {
switch (curChar) {
case '\b ':
stringBuilder.append( '\\b ');
break;
case '\f ':
stringBuilder.append( '\\f ');
break;
case '\n ':
stringBuilder.append( '\\n ');
break;
case '\r ':
stringBuilder.append( '\\r ');
break;
case '\t ':
stringBuilder.append( '\\t ');
break;
default:
stringBuilder.append( '\\u00 ');
stringBuilder.append(curChar.charCodeAt().toString(16));
}
}
}
stringBuilder.append( ' " ');
break;

case 'boolean ':
stringBuilder.append(object.toString());
break;

default:
stringBuilder.append( 'null ');
break;
}
}

this.serialize = function(object) {
var stringBuilder = new StringBuilder();
serializeWithBuilder(object, stringBuilder);
return stringBuilder.toString();
}

this.deserialize = function(data) {
return eval( '( ' + data + ') ');
}
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lee576/archive/2008/04/06/2255091.aspx
最新版本的jQuery EasyUI 1.3.6版全中文API汉化文档火热出炉,由于很多人和我要chm格式的,所以本次API我提供了2种版本的API,一个还是以前的EXE格式,另外一个就是人气颇高的chm格式。本次还将EasyUI 1.3.6版直接提供到API包里面,方便没有去官网下载的人直接使用。请大家持续关注我发布的资源,不出意外,我是会一直持续更新本API文档的。本次更新内容大约有30个,Bug修复的只有2个,剩下的全是新增内容,EasyUI的控件已经越来越好用了,顶一个。但是希望能把性能也提升提升,总是感觉在某些情况下EasyUI的性能不是太好。具体更新内容请看下面的说明: jQuery EasyUI 1.3.6版本更新内容: Bug(修复) treegrid:修复“getChecked”方法不能正确的返回被选择的行的问题; tree:修复在“onlyLeafCheck”属性为true时,复选框无法在异步树种正确显示的问题。 Improvement(改进) treegrid:所有的选择和选中的方法都扩展自datagrid组件; linkbutton:添加图标对齐功能的完整支持,可用值有:“top”、“bottom”、“left”、“right”; linkbutton:添加“size”属性,可用值有:“small”、“large”; linkbutton:添加“onClick”事件; menubutton:添加“menuAlign”属性,该属性允许用户设置顶级菜单对齐; combo:添加“panelAlign”属性,可用值有:“left”、“right”; calendar:添加“formatter”、“styler”和“validator”属性,这些属性允许用于自定义日历日期; calendar:添加“onChange”事件; panel:添加“method”、“queryParams”和“loader”选项; panel:添加“onLoadError”事件; datagrid:添加“onBeginEdit”事件,该事件在一个行进入编辑模式时触发; datagrid:添加“onEndEdit”事件,该事件在完成编辑但是编辑器尚未销毁之前触发; datagrid:添加“sort”方法和“onBeforeSortColumn”事件; datagrid:将“combogrid”编辑器集成到datagrid中; datagrid:添加“ctrlSelect”属性,在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作; slider:添加“converter”属性,该属性允许用户决定如何将一个值转换为进度条位置或进度条位置值; searchbox:添加“disabled”属性; searchbox:添加“disable”、“enable”、“clear”、“reset”方法; spinner:添加“readonly”属性、“readonly”方法和“onChange”事件。
jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签 1.3.6更新 Bug treegrid: getChecked方法不能返回正确的行. fixed. tree: 异步树,在onlyLeafCheck:true时复选框不显示正确. fixed. Improvement treegrid:继承datagrid组件所有的selecting和checking方法。 linkbutton:图标对齐方式,支持值:'top','bottom','left','right'。 linkbutton:添加"size"属性,支持值:'small','large'。 linkbutton:添加的onClick事件。 menubutton:添加"menuAlign"属性,允许用户设置顶级菜单对齐。 combo:添加"panelAlign"属性,支持值:'left','right'。 calendar:"formatter"、"styler"和"validator"选项可用于自定义日历日期。 calendar:添加的onChange事件。 panel:添加"method","queryParams"和"loader"属性。 panel:添加"onLoadError"事件。 datagrid:添加"onBeginEdit"事件。 datagrid:添加"onEndEdit"事件。 datagrid:添加"sort"方法和"onBeforeSortColumn"事件。 datagrid:"combogrid"编辑器集成到datagrid。 datagrid:添加"ctrlSelect"属性,允许使用ctrl+click 多选 slider:添加"converter"选项,允许用户决定如何将一个值转换为滑块的位置或滑块位置值。 searchbox:添加"disabled"属性。 searchbox:添加"disabled","enable","clear","reset"方法。 spinner:添加"readonly"属性、"readonly"方法和"onChange事件。

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧