Side navigation
#13548 closed bug (fixed)
Opened March 01, 2013 10:45PM UTC
Closed March 02, 2013 12:03AM UTC
Last modified March 02, 2013 01:22AM UTC
Regression: jQuery 2.0.0b2 bugs with $.fn.data handling parameters with dashes.
Reported by: | m_gol | Owned by: | rwaldron |
---|---|---|---|
Priority: | undecided | Milestone: | None |
Component: | unfiled | Version: | 2.0b2 |
Keywords: | Cc: | rwaldron | |
Blocked by: | Blocking: |
Description
jQuery 2.0.0b2 doesn't properly set data for parameters with dashes when there's already the appropriate data-* parameter present. As a result, code:
#!javascript $('body').attr('data-long-param', 'test'); $('body').data('long-param', {a: 2}); console.log($('body').data('long-param'));
prints 'test' to the console. This breaks a lot of things in our code base...
jsFiddle test case: http://jsfiddle.net/m_gol/6Rqwj/7/
This bug didn't exist in jQuery 2.0.0b1 and jQuery 1.9.1.
Attachments (0)
Change History (8)
Changed March 01, 2013 10:49PM UTC by comment:1
Changed March 01, 2013 10:52PM UTC by comment:2
cc: | → rwaldron |
---|
Thanks for jumping on the beta so quickly! It does look like a regression to me. What's your take @rwaldron?
Changed March 01, 2013 10:58PM UTC by comment:3
owner: | → rwaldron |
---|---|
status: | new → assigned |
Interesting. This looks like another edge case...
The property is correctly reflected when looking at the whole object:
http://jsfiddle.net/rwaldron/2UcDz/
I'll look closer at this over the weekend.
ps. Dave cc'ed and simultaneously blitzed me
Changed March 01, 2013 11:54PM UTC by comment:4
OK, the problem is, older jQuerys always converted data keys to camelCase; whereas in current trunk jQuery still saves the key in a camelCase version but the order in which it's being searched for on .data(key) is:
1) long-param in data cache
2) data-long-param HTML5 attribute
3) longParam in data cache
No wonder it never gets to 3 if the attribute is present...
Changed March 02, 2013 12:03AM UTC by comment:5
resolution: | → fixed |
---|---|
status: | assigned → closed |
Fixes #13548. .data should not miss attr() set data-* with hyphenated property names
Changeset: 3212a293695221df402317633adf63698d95efd1
Changed March 02, 2013 12:10AM UTC by comment:6
Oh, that was quick, thanks! :)
Changed March 02, 2013 12:13AM UTC by comment:7
One remark - you added the code detecting camelCase fields before checking data-* attributes but you didn't remove the code from just after this check so now it's duplicated.
Sorry, I've messed up the code sample. Pasted below.