Jquery+json输出的顺序能否按照原始顺序?
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
function LinkageSelect(options) {
items = {
'0':{2:'电脑',3:'手机',1:'电视'}};
function _bind(element , value) {
_fill(element , '0' , value);
}
function _fill(element , key , value) {
var json = _find(key , function() {
_fill(element , key , value);
});
for(var opt_value in json) {
var opt_title = json[opt_value];
var option = $('<option value="' + opt_value + '" ' + '>' + opt_title + '</option>');
element.append(option);
}
}
function _find(key , callback) {
return items[key];
}
function _getEl(element) {
return $(element);
}
return {
bind : function(element , value) {
element = _getEl(element);
value = '';
_bind(element , value);
}
}
}
$(function() {
var sel = new LinkageSelect();
sel.bind('.level_1');
})
</script>
</head>
<body>
<select class="level_1"></select>
</body>
</html>
代码如上(可以存为.htm格式用浏览器打开),当前运行得到的结果如下:
<select class="level_1">
<option value="1">电视</option>
<option value="2">电脑</option>
<option value="3">手机</option>
</select>
要求:
items = {
'0':{2:'电脑',3:'手机',1:'电视'}};
这个不能改,要求改其它代码,我想要的结果是:
<select class="level_1">
<option value="2">电脑</option>
<option value="3">手机</option>
<option value="1">电视</option>
</select>
也就是说,根据items中的json数据的原始顺序排序。
请问我的代码应该如何变?
http://www.raychou.com/chou/posts/317.htm
我的代码是以上代码里的节选。
请帮我修改LinkageSelect.js里的代码,或者改<script type="text/javascript">之间的代码也可以。
请尽量不要给我其它的解决方案,谢谢! 展开
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
function LinkageSelect(options) {
items = {
'0':{2:'电脑',3:'手机',1:'电视'}};
function _bind(element , value) {
_fill(element , '0' , value);
}
function _fill(element , key , value) {
var json = _find(key , function() {
_fill(element , key , value);
});
for(var opt_value in json) {
var opt_title = json[opt_value];
var option = $('<option value="' + opt_value + '" ' + '>' + opt_title + '</option>');
element.append(option);
}
}
function _find(key , callback) {
return items[key];
}
function _getEl(element) {
return $(element);
}
return {
bind : function(element , value) {
element = _getEl(element);
value = '';
_bind(element , value);
}
}
}
$(function() {
var sel = new LinkageSelect();
sel.bind('.level_1');
})
</script>
</head>
<body>
<select class="level_1"></select>
</body>
</html>
代码如上(可以存为.htm格式用浏览器打开),当前运行得到的结果如下:
<select class="level_1">
<option value="1">电视</option>
<option value="2">电脑</option>
<option value="3">手机</option>
</select>
要求:
items = {
'0':{2:'电脑',3:'手机',1:'电视'}};
这个不能改,要求改其它代码,我想要的结果是:
<select class="level_1">
<option value="2">电脑</option>
<option value="3">手机</option>
<option value="1">电视</option>
</select>
也就是说,根据items中的json数据的原始顺序排序。
请问我的代码应该如何变?
http://www.raychou.com/chou/posts/317.htm
我的代码是以上代码里的节选。
请帮我修改LinkageSelect.js里的代码,或者改<script type="text/javascript">之间的代码也可以。
请尽量不要给我其它的解决方案,谢谢! 展开
展开全部
你好!!
你的想法是好的,不过可悲的是,属性名为数字的,注定了它会按顺序排列的·····
如果在 items 不能改变的情况下,“请帮我修改LinkageSelect.js里的代码,或者改<script type="text/javascript">之间的代码也可以。”,一般人恐怕完成起来很有难度····
你给的网址,我看了下,注意到它的数据中的属性民确实也为数字,但是它的顺序是递增的,所以说人家的顺序其实是排好了的······
解决你的这个问题,最简单的方式就是修改 items,可以将属性名改为"字符+数字"的方式,然后在进行 填充option时进行处理···
只能说这么多了····
你的想法是好的,不过可悲的是,属性名为数字的,注定了它会按顺序排列的·····
如果在 items 不能改变的情况下,“请帮我修改LinkageSelect.js里的代码,或者改<script type="text/javascript">之间的代码也可以。”,一般人恐怕完成起来很有难度····
你给的网址,我看了下,注意到它的数据中的属性民确实也为数字,但是它的顺序是递增的,所以说人家的顺序其实是排好了的······
解决你的这个问题,最简单的方式就是修改 items,可以将属性名改为"字符+数字"的方式,然后在进行 填充option时进行处理···
只能说这么多了····
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以从后台往前台输入
前台代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form runat="server">
<div id="jsonContent" runat="server">
</div>
</form>
</body>
</html>
后台代码
页面加载的时候显示
if (!IsPostBack)
{
string str = "{ '2': '电脑', '3': '手机', '1': '电视' }";
string content = "<select class=\"level_1\">";
JavaScriptSerializer js = new JavaScriptSerializer();
Dictionary<string, object> dict = (Dictionary<string, object>)js.DeserializeObject(str);
foreach (KeyValuePair<string,object> item in dict)
{
content += string.Format("<option value=\"{0}\">{1}</option>",item.Key,item.Value);
}
content += "</select>";
this.jsonContent.InnerHtml = content;
}
前台代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form runat="server">
<div id="jsonContent" runat="server">
</div>
</form>
</body>
</html>
后台代码
页面加载的时候显示
if (!IsPostBack)
{
string str = "{ '2': '电脑', '3': '手机', '1': '电视' }";
string content = "<select class=\"level_1\">";
JavaScriptSerializer js = new JavaScriptSerializer();
Dictionary<string, object> dict = (Dictionary<string, object>)js.DeserializeObject(str);
foreach (KeyValuePair<string,object> item in dict)
{
content += string.Format("<option value=\"{0}\">{1}</option>",item.Key,item.Value);
}
content += "</select>";
this.jsonContent.InnerHtml = content;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
element.prepend(option); append换成prepend
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询