Skip to main content

Bug Tracker

Side navigation

#4132 closed bug (invalid)

Opened February 11, 2009 11:46PM UTC

Closed February 12, 2009 03:28AM UTC

Last modified February 12, 2009 10:06AM UTC

Data store hash object bug

Reported by: dave_smith Owned by:
Priority: minor Milestone: 1.3.2
Component: data Version: 1.3.1
Keywords: Cc:
Blocked by: Blocking:
Description

The desired output of the following code is that

a#other gives 'other' and the rest of the links give 'value'.

Instead, all links give 'other'.

If the same is done with a string instead of a hash object, then the desired output produced.

$(document).ready(function()

{

Store a hash on all links.

$('a').data('object_store', {prop: 'value'});

Get the stored hash from one of the links.

var object_store = $('a#other').data('object_store');

Alter the hash.

object_store.prop = 'other';

Store the hash in the one link.

$('a#other').data('object_store', object_store);

$('a').click(function()

{

// Display the output.

alert($(this).data('object_store').prop);

return false;

});

});

Attachments (0)
Change History (2)

Changed February 12, 2009 03:28AM UTC by dmethvin comment:1

resolution: → invalid
status: newclosed

All the elements are sharing the object that you initially set. I updated the documentation for

jQuery.data
to clarify this.

http://docs.jquery.com/Core/data

If you want a subset of the objects to have a different value, you could use

jQuery.extend
to create a new object with updated values:

$('a#other').data('object_store',
  $.extend({}, $('a#other').data('object_store'), {prop: other})
); 

Or if you want each element to have a unique object, do this:

$('a').each(function(){
  $(this).data('object_store', {prop: something});
}); 

Changed February 12, 2009 10:06AM UTC by dave_smith comment:2

Thanks dmethvin, your explanation and code examples are much appreciated.