如何使用jquery遍历javascript对象

时间:2012-10-04 04:22:36

标签: jquery socket.io

继承我的客户端代码

<!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选择器是否适合此任务,或者我应该回到本机javascript(即getElementsByTagName或类似)。所有的jQuery文档都是基于从DOM中选择有效的html标签,我无法弄清楚如何从收到的消息中选择任意标签。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用jQuery中的$ .each迭代您的对象。试试这个

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]); 
     });

FIDDLE

答案 1 :(得分:0)

您可以使用$.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);
});

答案 2 :(得分:0)

jQuery选择器不能与纯JavaScript对象一起使用。

http://api.jquery.com/jQuery/

  

使用普通对象
  目前,唯一支持的业务   在jQuery中包含的纯JavaScript对象是:   .data(),. prop(),. bind(),. unbind(),. turigger()和.triggerHandler()。

您必须使用jQuery.each()或纯JavaScript循环进行迭代。