Search code examples
javascriptjqueryjsonattrstringify

Can't get div attributes with jquery's attr()


The following code:

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

produces in the console:

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

Why isn't the result:

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

How do I get the latter?


Solution

  • Try this:

    <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>
    

    Fiddle: http://jsfiddle.net/xbuhbqux/