javascriptjqueryjquery-attributes

jQuery data() returns undefined, attr() returns integer


I have the following code:

alert($embellishment.data("embellishmentId"));
alert($embellishment.attr("data-embellishmentId"));

The first alert returns undefined, whereas the second alert returns an integer, 3.

-- SEE DEMO --

I'm using jQuery version 1.7.2 (data was added with version 1.4 I believe)

Why is this? Should I be using data() at all if its not returning the right values?


Solution

  • OK. I found the problem by interpreting jQuery docs.

    When you write:

    $embellishment.data("embellishmentId");
    

    it is handled by jQuery as compound attribute:

    <div data-embellishment-id="3"></div>
    

    So, to solve the problem you can use lower case in the data key otherwise it just addresses the different attribute.

    <!-- HTML -->
    <div data-embellishmentid="3"></div>
    
    // JavaScript
    $embellishment.data("embellishmentid");