2012-10-04 55 views
0

繼承人我的客戶端代碼如何使用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標籤,我無法弄清楚如何從收到的消息中選擇任意的標籤。

回答

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); 
}); 
+0

好聽的說,非常感謝。 – rw950431

0

jQuery選擇不能與普通的JavaScript對象使用。

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

正與普通對象
目前,僅操作上包裹在jQuery的普通的JavaScript對象支持 是: 。數據(),.丙(),.綁定( ),.unbind(),.trigger()和.triggerHandler()。

您將不得不迭代使用jQuery.each()或普通的JavaScript循環。

1

你可以嘗試從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