如何使用jQuery横向JavaScript对象
问题描述:
继承人我的客户端代码如何使用jQuery横向JavaScript对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Alerter</title>
</head>
<body>
<script src="jquery.min.js"></script>
<script src="http://www.example.com:8001/socket.io/socket.io.js"></script>
<script>
$(document).ready(function(){
var socket = io.connect('http://www.example.com:8001');
socket.on('message', function (data) { do_message(data) });
});
function do_message(data){
var $obj=$(jQuery.parseJSON(data));
//now what goes in here?
};
</script>
</body>
</html>
和JavaScript对象,我收到的样子
{
"root": {
"status": [
"OK"
],
"alert": [
{
"$": { "src": "web" },
"time": [ "1349316382" ],
"id": [ "user1" ]
},
{
"$": { "src": "web" },
"time": [ "1349316391" ],
"id": [ "user2" ]
},
]
}
}
我想要做的是叠代的每个并且采取适当的行动(实际的模式比我上面显示的要复杂一点)
jQuery选择器是否是这个任务的正确工具,或者我应该回到本机jav ascript(即getElementsByTagName或类似的)。所有的jQuery文档都基于从DOM中选择有效的html标签,我无法弄清楚如何从收到的消息中选择任意的标签。
答
可以遍历使用$.forEach
数据:
var obj = jQuery.parseJSON(data);
$.each(obj['root']['alert'], function(index, value) {
console.log(value.id);
});
或者,你可以使用普通的JS:
var obj = jQuery.parseJSON(data);
var alerts = obj['root']['alert'];
for (var key in alerts) {
var value = alerts[key];
console.log(value.id);
});
答
jQuery选择不能与普通的JavaScript对象使用。
正与普通对象
目前,仅操作上包裹在jQuery的普通的JavaScript对象支持 是: 。数据(),.丙(),.绑定( ),.unbind(),.trigger()和.triggerHandler()。
您将不得不迭代使用jQuery.each()或普通的JavaScript循环。
答
你可以尝试从jQuery的$的。每遍历你的对象..试试这个
console.log('status is : ' + data.root.status[0]);
$.each(data.root.alert , function(i, value){
console.log ('Dollar is : ' + value["$"]["src"]);
console.log ('Time is : ' + value["time"][0]);
console.log ('ID is : ' + value["id"][0]);
});
+0
本质上与我打勾的答案相同 - 对不起,我无法将两个答案标记为正确。 – rw950431
好听的说,非常感谢。 – rw950431