Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a new attribute with jQuery [duplicate]

Possible Duplicate:
jQuery .attr retrieving custom attribute returns undefined

I've got a weird problem, but I'm hoping I'm just doing something stupid. I'm trying to create a new attribute on an <img> element using jQuery, and this line:

$(selector).attr('selected', 'no');

When I inspect the DOM in Chrome, I just see selected="selected", no matter what I set the value to.

Just some extra info: I can't use just boolean values, as I need to keep track of "Yes", "No" and "Partial" property values. I'm calling a JS function from the "onClick" event of the img itself, and passing this as a parameter. I've inspected the object in the method, and the right object is passed; the fact that the attribute is set (even if to the wrong value) also supports this.

I'm dead certain I'm doing something stupid here... Any advice would be appreciated.

like image 672
ThinusP Avatar asked Oct 18 '12 07:10

ThinusP


2 Answers

Selected is already an attribute in the HTML standard, so you cannot create a custom attribute with the same name. In that case, you should use the data- attributes instead and create an attribute data-selected for instance.

In jQuery you handle the custom data attributes using the .data() method.

The custom data attributes are described in the HTML5 spec here.

like image 183
Christofer Eliasson Avatar answered Sep 20 '22 22:09

Christofer Eliasson


you could insert a data-* custom attribute like so

$(selector).data('selected', 'no');

your element will set a data-selected attribute

like image 36
Fabrizio Calderan Avatar answered Sep 21 '22 22:09

Fabrizio Calderan