如何使用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); 
}); 
+0

好听的说,非常感谢。 – rw950431

jQuery选择不能与普通的JavaScript对象使用。

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

正与普通对象
目前,仅操作上包裹在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]); 
    }); 

FIDDLE

+0

本质上与我打勾的答案相同 - 对不起,我无法将两个答案标记为正确。 – rw950431