无法使用jquery的attr()获取div属性

时间:2014-08-27 17:59:43

标签: javascript jquery json attr stringify

以下代码:

<div id='idiv' name='ndiv'>
<script>
    var attrs = $('#idiv').attr({})
    var astr = JSON.stringify(attrs)
    console.log (astr)
</script>

在控制台中生成:

{"0":{},"length":1,"context":{"location":{}},"selector":"#idiv"}

为什么不是结果:

{"id":"idiv","name":"ndiv"}

我如何得到后者?

3 个答案:

答案 0 :(得分:2)

试试这个:

<div id='idiv' name='ndiv'>
<script>
    var attrMap = $('#idiv')[0].attributes;
    var attrs = {};
    $.each(attrMap, function(i,e) { attrs[e.nodeName] = e.value; });
    console.log(attrs); // Object {id: "idiv", name: "ndiv"} 
    console.log(JSON.stringify(attrs)) //  {"id":"idiv","name":"ndiv"} 
</script>

小提琴:http://jsfiddle.net/xbuhbqux/

答案 1 :(得分:0)

jQuery运算符通常是可链接的,通常返回元素数组,而不是单个元素。

您所做的实际上是返回匹配元素列表,并要求该列表中所有项目的属性,这也是返回列表元素。 JSON.stringify反映了这一点。

答案 2 :(得分:0)

如果要创建元素所有属性的对象,请参阅this SO answer

生成您显示的对象:

var idiv = $('#idiv');
var attrs = JSON.stringify({
    "id": idiv.attr("id"),
    "name": idiv.attr("name")
});
console.log(attrs);