Creating a new attribute with jQuery [duplicate]

…衆ロ難τιáo~ 提交于 2019-12-08 21:38:22

问题


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.


回答1:


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.




回答2:


you could insert a data-* custom attribute like so

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

your element will set a data-selected attribute




回答3:


If you need to attach arbitrary data to an element, use .data(), not .attr().




回答4:


A DOM property is different than a DOM attribute ;)

I'd suggest using $(selector).data() for your use case.



来源:https://stackoverflow.com/questions/12949645/creating-a-new-attribute-with-jquery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!